1. Лучше использовать on вместо click.
2. Лучше подписаться на click на body. Если ссылок будет много, то и подписок будет много.
3. Не люблю $(this). Используйте $(e.target) (или currentTarget).
4. Событие лучше отменить с помощью e.preventDefault().
5. По name вы anchor ищете: его хорошо бы в кавычки обернуть. И ещё anchor это не обязательно ссылка.
$(document.body, 'a[href^="#"]:not(a[href="#"])', function(e) {
var link = $(e.target).attr('href').substr(1); // или currentTarget
var anchor = $('[name="'+link+'"]');
var top = anchor.offset().top;
$("body").animate({scrollTop: top}, 500);
e.preventDefault();
})