【问题标题】:Insert Content Before and After an Element Without Autoclosing tags在没有自动关闭标签的元素之前和之后插入内容
【发布时间】:2013-02-13 00:13:39
【问题描述】:

假设我有以下内容:

<div id="content">content</div>

我想在它之前插入一些东西**(注意未关闭的 div)**:

$("#content").before("<div>pre-pre-content</div><div>pre-content ");

在 ** 之后还有一些(注意我现在正在关闭 div)**:

$("#content").after(" post-content</div><div>post-post-content</div>");

我想要的输出是:

<div>pre-pre content</div>
<div>
    pre-content <div id="content">content</div> post-content
</div>
<div>post-post content</div>

相反,我得到的是:

<div>pre-pre content</div>
<div>pre-content</div>
<div id="content">content</div>
<div>post-content</div>
<div>post-post content</div>

因为 jQuery 会自动“纠正”未闭合的标签。

fiddle

有没有办法使用 .wrap() 在元素前后添加不同的内容而不自动关闭标签?

请注意,由于不相关的限制,我不能执行以下操作:

$("#content").html("<div>Content before " + $("#content).html() + " Content after</div>")

【问题讨论】:

    标签: javascript jquery insert tags


    【解决方案1】:

    您不能插入部分或未闭合的标签。在 DOM 中插入元素必须只插入整个元素。

    您的选择是:

    1. 提取要包裹在新元素中的元素,插入新的容器对象,然后将原始元素放入容器中。

    2. 直接操作父级的 HTML(一般不推荐)。

    3. 使用 jQuery .wrap() 方法为您执行 #1 中的选项。有关 jQuery 的 .wrap() 的更多信息,请参阅 here

    【讨论】:

    • 好吧,这是有道理的,不知道 jQuery。我遇到的更具体的问题是我的内容是嵌入的推文,当我尝试提取并重新插入它时,它变为空白:jsfiddle.net/zSks5
    • 我认为我实际上应该针对这些细节提出另一个问题,但如果您对修复有任何想法,请告诉我
    • 备案,推特具体问题在这里:stackoverflow.com/q/14844573/1179207
    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2020-10-05
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多