迭代jQuery集合,而不必重新构建jQuery对象

Iterate over a jQuery collection without having to rebuild the jQuery object

本文关键字:jQuery 构建 对象 新构建 集合 不必 迭代      更新时间:2023-09-26
$(".item").each (i, elt) ->
    $(elt).attr("href")
    # ...

$(elt)是必要的,以获得jquery对象。是否有一种方法来迭代jquery集合,而不必重建jquery对象?

执行$(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就足够了(而且效率更高,尽管效率非常罕见)。

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

var $items = $(".item");
$items.each(function(i) {
    $items.eq(i).doStuff();
});