使用jquery用另一个标签封装html标签?

时间:2011-10-05 07:40:36

标签: jquery html

例如,我有这段代码......

<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做到这一点吗?..但是怎么样?

更新

更新了代码,因为它们不仅有两个......还有其他标签

2 个答案:

答案 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