$(".item").each (i, elt) ->
$(elt).attr("href")
# ...
获取jquery对象需要执行$(elt)
。有没有办法迭代jquery集合,而不必重建jquery对象?
答案 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();
});