0

让我直接用代码解释一下:

我有:

<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 元素之后的所有内容

4

4 回答 4

2

定位您希望附加到的元素,然后找到匹配的所有元素,p.ctx直到下一个.accordion

元素 :

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

小提琴

于 2013-09-24T15:35:26.650 回答
1

试试.nextUntil()

$('.accordion').each(function (index) {
    var nextCTX = $(this).nextUntil('.accordion').filter('.ctx');
    $(this).find('dd').append(nextCMP);
});
于 2013-09-24T15:35:00.107 回答
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/

于 2013-09-24T15:38:48.627 回答
1

尝试这个

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

演示

于 2013-09-24T15:34:59.347 回答