Проблема тут:
var id = $(this).attr('href'),
top = $(id).offset().top;
Ты получаешь
id как значение атрибута
href ссылки, далее полученное значение
id ты подставляешь сюда:
$(id).
Сама ошибка говорит о том, что значение
id не подходит для использования в качестве селектора.
Проверь какие значения ты используешь для атрибута
href
p.s.
In the first formulation listed above, jQuery() — which can also be written as $() — searches through the DOM for any elements that match the provided selector and creates a new jQuery object that references these elements: