使用变量指定jquery选择器

时间:2011-08-10 00:51:06

标签: javascript jquery jquery-selectors

我无法让$(target)工作。

如果我点击包含href=#top的链接,alert(target)会显示 #top ,但$(target).offset会返回 null

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

3 个答案:

答案 0 :(得分:2)

当你这样做时:

$(target).offset()

你基本上是这样做的:

$("#top").offset()

但是,您显然在页面中没有ID为“top”的对象(因此它返回null)。所以,如果你给这个ID名称为top的链接也可以这样做:

<a name="top" id="top"></a>

或者,您可以使用此jQuery查找名称=“top”的链接标记:

target = target.slice(1);               // remove # from start of the name
$("[name='" + target + "']").offset()   // construct $("[name='top']");

在这里,您需要查找属性为name ='top'的标记。

答案 1 :(得分:0)

使用$(this).offset()。您的target var只是一个字符串,而不是jQuery对象或DOM节点。

答案 2 :(得分:0)

可能是页面上不存在元素#top。尝试提醒$(target).length,看看你得到了什么。