2013-02-13 34 views
3

说我有以下几点:jQuery的插入内容之前并没有Autoclosing标签的元素后

<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>") 

回答

5

无法插入部分或未关闭标签。在DOM中插入元素只能插入整个元素。

你的选择是:

  1. 提取想要的元素被包裹在你的新元素,将新的容器对象,然后把你的原始元素到容器中。

  2. 直接操作父代的HTML(通常不推荐)。

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

+0

好吧,这是有道理的,不知道关于jQuery。我遇到的更具体的问题是,我的内容是嵌入式推文,当我尝试提取并重新插入它时,它变为空白:http://jsfiddle.net/zSks5/ – dougmacklin 2013-02-13 00:23:09

+0

我想我应该实际打开另一个问题与这些细节,但如果你有任何想法的修复,让我知道 – dougmacklin 2013-02-13 00:27:16

+0

的记录,具体问题在这里tweet:http://stackoverflow.com/q/14844573/1179207 – dougmacklin 2013-02-13 00:42:35

相关问题