例如,我有这段代码......
<div id="outerdiv">
<!--other tags-->
<div class="innerdiv">
<!--other tags-->
<fieldset>
<!--other tags-->
<!--one start-->
<fieldset>
<!--other tags-->
</fieldset>
<fieldset class="myclass">
<!--other tags-->
</fieldset>
<!--one end-->
</fieldset>
<!--two start-->
<fieldset>
<!--other tags-->
</fieldset>
<fieldset class="myclass">
<!--other tags-->
</fieldset>
<!--two end-->
<!--two start-->
<fieldset>
<!--other tags-->
</fieldset>
<fieldset class="myclass">
<!--other tags-->
</fieldset>
<!--two end-->
<fieldset>
<!--other tags-->
<!--one start-->
<fieldset>
<!--other tags-->
</fieldset>
<fieldset class="myclass">
<!--other tags-->
</fieldset>
<!--one end-->
</fieldset>
</div>
<div class="innerdiv">
<!--other tags-->
<!--two start-->
<fieldset>
<!--other tags-->
</fieldset>
<fieldset class="myclass">
<!--other tags-->
</fieldset>
<!--two end-->
<fieldset>
<!--other tags-->
<!--one start-->
<fieldset>
<!--other tags-->
</fieldset>
<fieldset class="myclass">
<!--other tags-->
</fieldset>
<!--one end-->
</fieldset>
</div>
</div>
正如您所看到的那样,两者完全相同,但是我希望两个也被字段集封装。我可以用jquery做到这一点吗?..但是怎么样?
更新了代码,因为它们不仅有两个......还有其他标签
答案 0 :(得分:4)
试试http://api.jquery.com/wrap/?
<script>$("p").wrap("<div></div>");</script>
答案 1 :(得分:2)
如果你想用一个结构包装两个元素,你需要使用.wrapAll
。您无法使用.wrap
,因为它会围绕每个匹配的元素包装HTML,而不是围绕匹配元素的所有。我想到的第一件事是:
$("#firstFieldset").next().andSelf().wrapAll("<fieldset>");
鉴于HTML:
<fieldset id="firstFieldset"></fieldset>
<fieldset class="myclass"></fieldset>
这是working example(检查输出窗口的来源)。它的作用是选择第一个字段集,得到以下兄弟,将原始字段添加回匹配的元素集,并将整个匹配集包装在fieldset
中。
更新
var yourFieldset = $("#mydiv > fieldset:first").next();
yourFieldset.next().andSelf().wrapAll("<fieldset>");
第一行获得第一个fieldset
,它是#mydiv
的直接子项,然后获得下一个兄弟,这是您第二组的第一个fieldset
。