【问题标题】:Placing a div within body tag在body标签中放置一个div
【发布时间】:2013-07-09 02:58:12
【问题描述】:

目前我的页面设置为:

<body id="some-id">

   <div class="some-class">
   </div>
   <!-- some-class -->

</body>

我已经尝试过使用 append 和之前,但是,它并没有完全达到我想要做的效果。

我正在尝试添加一个 ID 为 inserted-div 的 div,如下所示:

<body id="some-id">

<div id="inserted-div">

   <div class="some-class">
   </div>
   <!-- some-class -->

</div>
<!-- inserted div -->

</body>

每次我使用某些东西时,例如:$('body').appendto("&lt;div id='inserted-div'&gt;"); 它要么不会插入,要么会在插入的 div> 之后插入 &lt;/div&gt;,而不是将 &lt;/div&gt; 放在关闭主体之前。尝试了 prepend 和 prependto 但没有运气。

【问题讨论】:

    标签: javascript jquery prepend appendto


    【解决方案1】:

    您正在寻找wrap 方法。

    $('.some-class').wrap('<div id="inserted-div"></div')
    

    $('body').prepend -- 将添加一个 div 作为 body 的第一个子元素。

    $('body').append -- 将添加一个 div 作为 body 的最后一个子元素。

    但在您的情况下,您希望 inserted-div 作为已经存在的 div 的包装器。

    Check Fiddle

    只针对第一个实例,您可以使用

    $('.some-class').first() 或 $('.some-class:eq(0)')

    【讨论】:

    • 没错!完全忘记了 wrap :) 唯一的问题是它包裹了 body,我不想包裹 some-class 因为它可能会改变,这就是为什么我想要它在 body 中并包裹所有其他内容:)
    • 好的完全明白了。无论如何都需要包装。
    • 我怎样才能让它只包裹第一个找到的类(如果页面上有两个相同的类)? $('.some-class').first.wrap?
    • $('.some-class:eq(0)').wrap 应该这样做
    • 谢谢苏珊斯。好的,只是测试您的答案,它会创建 2 个相互包裹的 inserted-div,然后包裹 some-class div?
    【解决方案2】:

    如果您想在整个正文内容周围包裹一些东西,请尝试:

    $("body > *").wrapAll("<div id='inserted-div'/>");
    

    如果你想环绕正文中的第一个 DIV:

    $("body > div:eq(0)").wrap("<div id='inserted-div'/>");
    

    【讨论】:

    • 谢谢。看起来不错。但如上所述,由于某种原因,它创建了两次inserted-div?
    • 你能用小提琴演示一下吗?
    • 可能是我自己的 JS 打断了它。小提琴会很长,我不想占用你的时间来调试我的代码。我会把它设置在标题中,看看它是怎么回事..
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多