我想在一个容器中包装两个div但是只有它们直接相互跟随。
TRUE
<div class="element"></div>
<div class="element"></div>
FALSE
<div class="element"></div>
<p class="different-element"></p>
<div class="element"></div>
我知道如何使用.wrapAll('<div class="container"></div>')
只是想知道如何抓住他们互相追随。我在想.next()
可行并使用if( $('.element').next('.elememt') == true)
然后,如果条件为真,则使用.wrapALL()
包装它们 - 但这不起作用。
.has()
因为只检查后代而无法工作。
任何建议都会很棒。感谢
答案 0 :(得分:3)
要实现这一目标,您可以使用兄弟选择器; +
:
var $secondElement = $('.element + .element');
$secondElement.add($secondElement.prev()).wrapAll('<div class="container"></div>')
请注意,如果有两个以上的.element
兄弟姐妹,您可能需要更复杂的逻辑。
答案 1 :(得分:1)
您可以使用+
兄弟选择器进行检查,该选择器选择下一个元素。延长Rory的答案:
var $secondElement = $('.element + .element');
$secondElement.add($secondElement.prev(".element")).wrapAll('<div class="container"></div>')
注意:我必须稍微改变一下我的答案,因为Rory已经以更好的方式回答了这个问题。我没有删除,因为,即使我认为相同,因为这是一个原创的想法。
答案 2 :(得分:0)