3
$(".item").each (i, elt) ->
    $(elt).attr("href")
    # ...

这样做$(elt)是获取 jquery 对象的必要条件。有没有一种方法可以遍历 jquery 集合,而不必重建 jquery 对象?

4

2 回答 2

2

执行 $(elt) 是获取 jquery 对象的必要条件。

是的。

有没有一种方法可以遍历 jquery 集合,而不必重建 jquery 对象?

不,因为您拥有的 jQuery 对象是所有匹配元素的集合。要在单个元素上使用 jQuery 方法,您需要获取一个 jQuery 对象,该对象仅包含您要操作的单个元素。在一个循环中,这意味着包装您的elt(或this,因为两者都是相同的 DOM 元素)。

但是,对于很多事情,您不需要jQuery 方法。您的示例就是其中之一,只需elt.href直接使用:

$(".item").each (i, elt) ->
    var someVar = elt.href;
    # ...

DOM2 HTML 规范和较新的HTML5 规范都列出了许多可以直接使用的反射属性。id,例如,是人们经常使用的一种。您会看到$(this).attr("id")很多地方this.id就足够了(而且效率更高,尽管效率很重要的情况极为罕见)。

于 2013-03-28T17:57:41.583 回答
1

是的,缓存 jQuery 对象然后按索引选择。

var $items = $(".item");

$items.each(function(i) {
    $items.eq(i).doStuff();
});
于 2013-03-28T17:58:30.793 回答