为什么用.each()迭代jQuery对象不给我jQuery对象?

bad*_*adp 15 jquery

以下按预期工作:

$(".foo").first().text("hi!")
Run Code Online (Sandbox Code Playgroud)

...因为first()返回一个jQuery对象.

但是,如果我想使用text()所有匹配的方法,我需要做:

$(".foo").each( function(idx, obj) {
  $(obj).text("hi!")
  }
)
Run Code Online (Sandbox Code Playgroud)

...因为each()给你DOM对象.

这种莫名其妙的差异背后的设计原因是什么?我怎样才能避免为每个匹配构建一个jQuery对象?

Kal*_*see 12

可能是由于与循环大型集合相关的性能原因?如果您只需要DOM对象,则可以节省周期.如果你需要jQuery对象,那么你可以很容易地得到它.

我通常不为每个提供第二个参数,所以我可以使用$(this).