如果他们直接跟随另一个jquery

时间:2015-12-15 11:18:17

标签: javascript jquery

我想在一个容器中包装两个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()因为只检查后代而无法工作。

任何建议都会很棒。感谢

3 个答案:

答案 0 :(得分:3)

要实现这一目标,您可以使用兄弟选择器; +

var $secondElement = $('.element + .element');
$secondElement.add($secondElement.prev()).wrapAll('<div class="container"></div>')

Example fiddle

请注意,如果有两个以上的.element兄弟姐妹,您可能需要更复杂的逻辑。

答案 1 :(得分:1)

您可以使用+兄弟选择器进行检查,该选择器选择下一个元素。延长Rory的答案:

var $secondElement = $('.element + .element');
$secondElement.add($secondElement.prev(".element")).wrapAll('<div class="container"></div>')

注意:我必须稍微改变一下我的答案,因为Rory已经以更好的方式回答了这个问题。我没有删除,因为,即使我认为相同,因为这是一个原创的想法。

答案 2 :(得分:0)

也许你可以检查下一个兄弟的索引是否相同

event type.MOUSEBUTTONDOWN, MOUSEBUTTONUP, MOUSEMOTION

这是fiddle