Javascript 同时循环两个jQuery对象
我有两个长度相等的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());
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中,这是一个相对简单的任务。