如果您有以下代码:
<div class="parent">
<div class="1"></div>
<div class="2"></div>
<div class="3"></div>
<div class="4"></div>
<div class="5"></div>
</div>
如何用类2,3,4,5在div周围换一个新的div,所以看起来像这样:
<div class="parent">
<div class="1"></div>
<div class="sub">
<div class="2"></div>
<div class="3"></div>
<div class="4"></div>
<div class="5"></div>
</div>
</div>
父级的wrapAll会用新的div包装所有内容,有没有办法让它忽略第一个div?
答案 0 :(得分:7)
使用gt(0)
选择除第一个div(直接后代)和wrapAll之外的所有内容。这将选择.parent
div。
$('.parent > div:gt(0)').wrapAll('<div class="sub">');
<强> Fiddle 强>
参见 :gt()
输出:
<div class="parent">
<div class="1">1</div>
<div class="sub">
<div class="2">2</div>
<div class="3">3</div>
<div class="4">4</div>
<div class="5">5</div>
</div>
</div>
答案 1 :(得分:4)
使用not()
filter或:not()
selector。
$('.parent div').not('.1').wrapAll('<div class="sub">');
或者:
$('.parent div:not(.1)').wrapAll('<div class="sub">');
如果您始终要忽略第一个元素,也可以使用div:first-child
代替.1
。
答案 2 :(得分:1)
如果您要保留的元素不一定是第一个,您可以使用:
$(".parent div").not("div.1").wrapAll("<div class='sub'>");
虽然,这将重新排序你的div
,以便首先包装,而未包装的元素最后。当它是第一个元素时不是问题,但如果它是第三个元素,例如,输出将是:
<div class='sub'>
<div class="1"></div>
<div class="2"></div>
<div class="4"></div>
<div class="5"></div>
</div>
<div class="3"></div>
实施例: http://jsfiddle.net/tomtheman5/3TL4M/
编辑:刚看到@ Corion的回答......这基本上是相同的,但有更多信息。我会把它留下来。