如何附加所有DIV从类开始并再次重复此过程?

时间:2013-09-24 15:29:08

标签: jquery

让我直接在代码中解释:

我有:

<dl class="ctx accordion">
   <dt>headline<a>x</a></dt>
   <dd><!----></dd>
</dl>
<p class="ctx">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>
<p class="ctx">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>
<p class="ctx">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>

<dl class="ctx accordion">
   <dt>headline<a>x</a></dt>
   <dd><!----></dd>
</dl>
<p class="ctx">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>

<dl class="ctx accordion">
   <dt>headline<a>x</a></dt>
   <dd><!----></dd>
</dl>
<p class="ctx">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>
<p class="ctx">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</p>

我想要完成所有.ctx:not('。accordion')进入prev .accordion dd等等

这是我的尝试:

     $('.accordion').each(function(index) {

     var nextCTX = $(this).nextAll('.ctx').not('.accordion');
     $(this).find('dd').append(nextCTX);
 });

但它不能很好地运作。在这个例子中,我用.ctx捕获所有内容并将其放入第一个.accordion dd

怎么了?

修改

我需要一个解决方案来停止手风琴循环。 我目前看起来像:      $('。accordion dd')。append(function(){          return $(this).closest('。accordion')。nextUntil('。accordion')。filter('。ctx:not(“。stopLast”)');      });

在这种情况下,循环不能阻止包含.stopLast

的elem之后的所有内容

4 个答案:

答案 0 :(得分:2)

定位您要添加到的元素,然后查找与p.ctx匹配的所有元素,直到下一个.accordion

元素:

$('.accordion dd').append(function() {
    return $(this).closest('.accordion').nextUntil('.accordion').filter('p.ctx');
});

FIDDLE

答案 1 :(得分:1)

试试这个

$('.accordion').filter(function () {
    $(this).nextUntil('.accordion').filter('.ctx').appendTo($(this).find('dd'));
});

DEMO

答案 2 :(得分:1)

尝试.nextUntil()

$('.accordion').each(function (index) {
    var nextCTX = $(this).nextUntil('.accordion').filter('.ctx');
    $(this).find('dd').append(nextCMP);
});

答案 3 :(得分:1)

假设.accordion元素将始终是.ctx:not('。accordion')的兄弟,那么你可以使用:

$('.ctx.accordion').each(function () {
    var $this = $(this),
        $elemsToMove = $this.nextUntil('.accordian', '.ctx');

    $this.find('dd').append($elemsToMove);
});

http://jsfiddle.net/BYossarian/phDdz/