Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同时循环两个jQuery对象_Javascript_Jquery - Fatal编程技术网

Javascript 同时循环两个jQuery对象

Javascript 同时循环两个jQuery对象,javascript,jquery,Javascript,Jquery,我有两个长度相等的jQuery对象 var foos = $('.foo'); var bars = $('.bar'); 如果这些是数组,我可以使用它们的索引遍历它们,如下所示: for(var i = 0; i < foos.length; i++){ foos[i].html(bars[i].html()); } for(var i = 0; i < foos.length; i++){ $(foos[i]).html($(bars[i]).html());

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

var foos = $('.foo');
var bars = $('.bar');
如果这些是数组,我可以使用它们的索引遍历它们,如下所示:

for(var i = 0; i < foos.length; i++){
    foos[i].html(bars[i].html());
}
for(var i = 0; i < foos.length; i++){
    $(foos[i]).html($(bars[i]).html());
}
for(变量i=0;i
但是以这种方式引用jquery对象会返回节点本身,而不是特定的匹配jquery对象。这可以通过如下方式进行修复:

for(var i = 0; i < foos.length; i++){
    foos[i].html(bars[i].html());
}
for(var i = 0; i < foos.length; i++){
    $(foos[i]).html($(bars[i]).html());
}
for(变量i=0;i
但这并不干净/容易阅读,而且我认为这是低效的。是否有其他方法可以同时循环两个jQuery对象

编辑:效率要低得多,请参见>

您需要该功能:

for(var i = 0; i < foos.length; i++)
{
    foos.eq(i).html(bars.eq(i).html());
}
for(变量i=0;i
从文档中:

说明:将匹配元素集减少为指定索引处的元素集


本姆的回答直接回答了这个问题,但我想提供一个替代方案

foos.html(function (i) {
   return bars.eq(i).html();
});
不确定是否会更有效

当然可以缩短内部部分以使其更有效,但我认为除非你确实存在性能问题,否则不应该使用微优化。

foos.html(function (i) {
   return bars[i].innerHTML;
});
当然,javascript版本总是比任何js库都快:

for(var i = 0; i < foos.length; i++){
  foos[i].innerHTML = bars[i].innerHTML;
}
for(变量i=0;i
foos=document.getElementsByClassName('foo');
bar=document.getElementsByClassName('bar');
对于(变量i=0;i

你好,世界!1.
你好,世界!2.

你好,世界!3
@Brian因为他需要在循环中控制一个,另一个。你怎么知道
foos.length==bar.length
?@Dmitry因为我控制HTML内容?签出。“情商甚至比我提到的解决方法效率更低。那么,当你似乎已经决定了正确的答案时,为什么还要费心问一个问题呢?”@JamesG。您是否有要解决的性能问题?否则我会认为这个论点是无效的。我还没有决定,但我已经为此奋斗了几个小时。我正在寻找一个比我已有的答案更好的答案。虽然eq效率较低真的很奇怪。。。最坏的情况也应该如此。嗯。如果性能是一个问题,那么最好的做法就是放弃jquery,直接用javascript实现。无论如何,在javascript中,这是一个相对简单的任务。