【问题标题】:jQuery .each() loop going wildjQuery .each() 循环变得疯狂
【发布时间】:2012-11-20 18:06:45
【问题描述】:

我有大约 25 组 div 容器,其子容器共享相同的父/子类名称,每个组都有一个空的 div 容器。

<div class="parent">
    <div class="child">
        child content1
    </div>
</div>
<div class="empty"></div>

<div class="parent">
    <div class="child">
        child content2
    </div>
</div>   
<div class="empty"></div>

.....

<div class="parent">
    <div class="child">
        child content25
    </div>
</div>  
<div class="empty"></div>

我想将每个“子”div 元素附加到“空”div 容器中,使其看起来像:

<div class="parent">
    <div class="child">
        child content1
    </div>
</div>
<div class="empty">
    <div class="child">
        child content1
    </div>
</div>

<div class="parent">
    <div class="child">
        child content2
    </div>
</div>
<div class="empty">
    <div class="child">
        child content2
    </div>
</div>

....

<div class="parent">
    <div class="child">
        child content25
    </div>
</div>
<div class="empty">
    <div class="child">
        child content25
    </div>
</div>

我使用了以下代码:

$('.parent').each(function(){    
    $(this).find('div').appendTo('.empty');
}); 

但结果显示“子”div 元素及其内容在每个组中循环到“空”div 25 次,即 25x25=625 个新的“子”div!快疯了!!!!!!!!!!!!

有人可以帮忙吗?!

【问题讨论】:

  • .appendTo('.empty') 匹配每个 .empty div,这意味着您将每个子 div 添加到每个 .empty div。

标签: jquery each


【解决方案1】:

使用 .next() 可能会更好吗?

$('.parent').each(function(){   
       var parent = $(this);
       var child = parent.children('.child');
       parent.next('.empty').append(child.clone());
}); 

在稍微弄乱了实现之后,这是一个小提琴 -> http://jsfiddle.net/g9G85/8/

【讨论】:

  • 你说得对,以前的版本不行。我做了一些更改,但还没有彻底测试,抱歉。
  • 感谢您的努力,一切顺利!感恩节快乐!
【解决方案2】:

This 看起来像你想要的:

<div class="parent">
    <div class="child">
        child content1
    </div>
</div>
<div class="empty"></div>

<div class="parent">
    <div class="child">
        child content2
    </div>
</div>   
<div class="empty"></div>​

JS:

$('.parent').each(function() {
    var parent= $(this);
    var child = parent.children('.child');
    parent.next('.empty').append(child.clone());
});​

【讨论】:

  • 是的,我相信这是正确的。我已经编辑了我的答案以遵循这个实现,谢谢。
  • 有效!谢谢!我现在可以过一个愉快的感恩节了!你们也是! ;)
猜你喜欢
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2021-02-13
相关资源
最近更新 更多