如何使用 jQuery 包装 1-2 个或更多相同的 class,而不用中间的不同 class 包装它?
How to wrap 1-2 or more of the same class using jQuery without wrapping it with a different class in between?
为了让 I 在视觉上易于理解,我想要这个:
<div class="wrap">
<input type="hidden" />
<input type="hidden" />
<div class="a">content</div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<div class="bee"></div>
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<div class="cee"></div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
</div>
变成这样:
<div class="wrap">
<div class="JQueryWrap">
<input type="hidden" />
<input type="hidden" />
<div class="a">content</div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<div class="a"></div>
</div>
<input type="hidden" />
<input type="hidden" />
<div class="bee"></div>
<div class="JQueryWrap">
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
</div>
<input type="hidden" />
<input type="hidden" />
<div class="cee"></div>
<div class="JQueryWrap">
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
</div>
</div>
包装内的 HTML 是自动生成的,所以我必须走 jQuery 的路径。
在 .wrap
class.
中的每个兄弟节点上方总是有 1 个或多个隐藏类型输入
您可以找到所有 .a
元素,其前一个兄弟元素不是 .a
元素(即每个块的开头),然后找到所有连续的 .a
兄弟元素并调用 wrapAll () 赞
$('.wrap .a').not('.a + .a').each(function () {
$(this).nextUntil(':not(.a)').addBack().wrapAll('<div class="JQueryWrap"/>')
})
演示:Fiddle
为了让 I 在视觉上易于理解,我想要这个:
<div class="wrap">
<input type="hidden" />
<input type="hidden" />
<div class="a">content</div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<div class="bee"></div>
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<div class="cee"></div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
</div>
变成这样:
<div class="wrap">
<div class="JQueryWrap">
<input type="hidden" />
<input type="hidden" />
<div class="a">content</div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<div class="a"></div>
</div>
<input type="hidden" />
<input type="hidden" />
<div class="bee"></div>
<div class="JQueryWrap">
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
</div>
<input type="hidden" />
<input type="hidden" />
<div class="cee"></div>
<div class="JQueryWrap">
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<input type="hidden" />
<div class="a"></div>
</div>
</div>
包装内的 HTML 是自动生成的,所以我必须走 jQuery 的路径。
在 .wrap
class.
您可以找到所有 .a
元素,其前一个兄弟元素不是 .a
元素(即每个块的开头),然后找到所有连续的 .a
兄弟元素并调用 wrapAll () 赞
$('.wrap .a').not('.a + .a').each(function () {
$(this).nextUntil(':not(.a)').addBack().wrapAll('<div class="JQueryWrap"/>')
})
演示:Fiddle