$(".item").each (i, elt) ->
$(elt).attr("href")
# ...
做$(elt)
是必要的,以获得jquery对象。是否有一种方法来迭代jquery集合,而不必重建jquery对象?
执行$(elt)是获得jquery对象所必需的。
是的。
是否有一种方法来迭代jquery集合,而不必重建jquery对象?
。因为您拥有的jQuery对象是所有匹配元素的集合。要在单个元素上使用jQuery方法,您需要获得一个jQuery对象,该对象只包含您想要操作的单个元素。在循环中,这意味着包装您的elt
(或this
,因为两者是相同的DOM元素)。
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();
});