迭代jQuery集合而无需重建jQuery对象

时间:2013-03-28 17:56:36

标签: javascript jquery iterator

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

获取jquery对象需要执行$(elt)。有没有办法迭代jquery集合,而不必重建jquery对象?

2 个答案:

答案 0 :(得分:2)

  

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

  

有没有办法迭代jquery集合,而不必重建jquery对象?

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

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

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

DOM2 HTML spec和较新的HTML5 spec都列出了可以直接使用的大量反射属性。例如,id是人们经常使用的一个。你可以看到$(this).attr("id")很多this.id就足够了(而且效率更高,尽管效率非常重要)。

答案 1 :(得分:1)

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

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

$items.each(function(i) {
    $items.eq(i).doStuff();
});