Как добавить все DIV начинается с класса и повторить этот процесс снова?

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") ');});

в этом случае цикл can not stop a включает все после elem с.stopLast

Теги:

4 ответа

2

Нацельте элементы, которые вы хотите добавить, а затем найдите все элементы, которые соответствуют p.ctx до следующего .accordion

элемент:

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

FIDDLE

  • 0
    ты работает хорошо!
  • 0
    хорошо, как я могу остановиться с такой версией процесса добавления? В примере я понимаю, что ни один html не содержит класс css .stoPLast внутри цикла добавления. но проблема в том, что каждый div содержит класс .ctx, идущий внутри аккордеона. что я хочу остановить
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/

1

Попробуйте .nextUntil()

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

Попробуй это

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

DEMO

Ещё вопросы

Сообщество Overcoder
Наверх
Меню