jQuery nextAll until the following class

时间:2015-10-30 23:30:52

标签: jquery

So I'm trying to assign .subs to the previous div but I was only able to assign only one that go after the preceding div. I can't figure out how to assign all .subs after the .right until the next .right Here is the example to get an idea $(".right").each(function() { var a = $(this).find('ul li:last-child'); $(this).next('.subs').insertAfter(a); }); .right { border: 1px solid #000; padding: 10px margin-bottom: 10px } <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <div class="right"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div class="subs"> <div class="right"> <ul> <li>Subs One</li> <li>Subs Two</li> </ul> </div> </div> <div class="subs"> <div class="right"> <ul> <li>Subs One</li> <li>Subs Two</li> </ul> </div> </div> <div class="right"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div class="right"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div class="subs"> <div class="right"> <ul> <li>Subs One</li> <li>Subs Two</li> </ul> </div> </div>

1 个答案:

答案 0 :(得分:0)

I think .nextUntil() is what you're looking for. This returns all the following siblings up to, but not including, an element that matches the selector. $(".right").each(function() { var a = $(this).find('ul li:last-child'); $(this).nextUntil('.right').insertAfter(a); }); .right { border: 1px solid #000; padding: 10px margin-bottom: 10px } <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <div class="right"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div class="subs"> <div class="right"> <ul> <li>Subs One</li> <li>Subs Two</li> </ul> </div> </div> <div class="subs"> <div class="right"> <ul> <li>Subs One</li> <li>Subs Two</li> </ul> </div> </div> <div class="right"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div class="right"> <ul> <li>One</li> <li>Two</li> </ul> </div> <div class="subs"> <div class="right"> <ul> <li>Subs One</li> <li>Subs Two</li> </ul> </div> </div>