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>