同时循环遍历两个jQuery对象

Jam*_*uld -2 javascript jquery

我有两个长度相等的jQuery对象.

var foos = $('.foo');
var bars = $('.bar');
Run Code Online (Sandbox Code Playgroud)

如果这些是数组,我可以使用它们的索引遍历它们,如下所示:

for(var i = 0; i < foos.length; i++){
    foos[i].html(bars[i].html());
}
Run Code Online (Sandbox Code Playgroud)

但是以这种方式引用jquery对象会返回节点本身,而不是特定的匹配jquery对象.这可以修复如下:

for(var i = 0; i < foos.length; i++){
    $(foos[i]).html($(bars[i]).html());
}
Run Code Online (Sandbox Code Playgroud)

但这不干净/易读,我认为效率低下.有没有另一种方法同时循环两个jQuery对象?

编辑:效率低得多,请参阅> http://jsperf.com/js-array-vs-jquery-selector

Ben*_*enM 6

你需要这个eq()功能:

for(var i = 0; i < foos.length; i++)
{
    foos.eq(i).html(bars.eq(i).html());
}
Run Code Online (Sandbox Code Playgroud)

来自Docs:

描述:将匹配元素集减少到指定索引处的元素集.

  • 然后最好的做法是删除jquery并直接用javascript完成,如果性能是一个问题.无论如何,这在javascript中是一个相对简单的任务. (3认同)
  • 那么,为什么你似乎已经决定了正确的答案,为什么还要问一个问题呢? (2认同)