我有多行,我无法更改结构或属性。但我可以在这些行中添加子元素(.start
& .end
)。
所以我想用一个.start
子元素在一行之后包装所有元素,直到下一行有一个.end
子元素。我创建了一个each
循环来实现这一目标。但问题是我的包裹的结束div太深了一层。
正如您在下面的代码段中看到的那样,边框围绕.start
元素之后的所有元素,但它应该只在第3,4和9行附近。
$('.row .start').closest('.row').each(function (index) {
$(this).nextUntil(".row .end").wrapAll("<div class='box'/>");
});
&#13;
.box{
border: 1px solid red;
background-color:pink;
padding: 10px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="element">1</div>
</div>
<div class="row">
<div class="element">
<div class="start">start</div>
</div>
</div>
<div class="row">
<div class="element">3</div>
</div>
<div class="row">
<div class="element">4</div>
</div>
<div class="row">
<div class="element">
<div class="end">end</div>
</div>
</div>
<div class="row">
<div class="element">6</div>
</div>
<div class="row">
<div class="element">7</div>
</div>
<div class="row">
<div class="element">
<div class="start">start</div>
</div>
</div>
<div class="row">
<div class="element">9</div>
</div>
<div class="row">
<div class="element">
<div class="end">end</div>
</div>
</div>
&#13;