$(".item").each (i, elt) ->
$(elt).attr("href")
# ...
这样做$(elt)
是获取 jquery 对象的必要条件。有没有一种方法可以遍历 jquery 集合,而不必重建 jquery 对象?
$(".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();
});