Когда вы делаете:
$(target).offset()
По сути, вы делаете:
$("#top").offset()
Но, очевидно, на вашей странице нет объекта с идентификатором "top""(таким образом, почему он возвращает ноль).Таким образом, это может сработать, если вы дадите ссылку с именем top, идентификатор которой также будет выглядеть так:
<a name="top" id="top"></a>
Или вместо этого вы можете использовать этот jQuery для поиска тега ссылки с name = "top":
target = target.slice(1); // remove # from start of the name
$("[name='" + target + "']").offset() // construct $("[name='top']");
Здесь вы ищите тег с атрибутом name = 'top'.