Укажите селектор jquery, используя переменную - PullRequest
1 голос
/ 10 августа 2011

Я не могу заставить $(target) работать.

Если я нажимаю на ссылку с href=#top, alert(target) отображает # top , но $(target).offset возвращает ноль .

$("[href^='#']").click( function() {
    var target = $(this).attr('href');
    alert(target);
    $("#body-wrapper").animate( {scrollTop: $(target).offset().top} ,300);
    return false
    })
};

Ответы [ 3 ]

2 голосов
/ 10 августа 2011

Когда вы делаете:

$(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'.

0 голосов
/ 10 августа 2011

Может быть элемент #top не существует на странице. Попробуйте предупредить $(target).length и посмотрите, что вы получите.

0 голосов
/ 10 августа 2011

Используйте $(this).offset().Ваш target var - это просто строка, а не объект jQuery или узел DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...