2012-07-17 99 views
0

我想添加一个段落到一个使用id选择器的h2标签。但是,由于某种原因,它不能正常工作。有人会帮助我吗?appendTo不工作在jQuery代码?

我有一个小提琴,我没有尝试过。请参阅:http://jsfiddle.net/ahLqZ/4/

这里是我下面的代码:

$(document).ready(function(){ 

     $("#cevre h2").appendTo($(this).next("p")); 

    })​ 
+2

你有ID重复元素,它是无效的。元素ID应该是唯一的 – Chandu 2012-07-17 15:26:05

+0

这是你在stackoverflow上的第二个问题 - 请学习如何接受答案......如果你不知道我在说什么[点击此处](http://meta.stackexchange.com/a/5235/170679) – ManseUK 2012-07-17 15:33:00

回答

4

试试这个:

$("#cevre h2").each(function() { 
    $(this).appendTo($(this).next("p")); 
}); 

用途.each()遍历h2元素 - 然后$(this)成为每个h2元素,而那时,document元素

Working example here

一个已经存在的DOM元素上使用appendTo注意移动它......你可能想要的东西(也许不是)是这样的:

$("#cevre h2").each(function() { 
    $(this).clone().insertAfter($(this).next("p")); 
}); 

用途.clone()创建h2第一的克隆和.insertAfter()插入<p>元素之后的新克隆的DOM元素而不是在它...

Working example here

另注 - 它不是合法的HTML有重复id属性在单一页面......我建议你改变<div id="cevre"><div class="cevre"> ...您的jQuery选择就成为$(".cevre h2")

另一个音符 - 你应该缓存jQuery对象,如果他们多次使用:

$(".cevre h2").each(function() { 
    var $this = $(this); 
    $this.clone().insertAfter($this.next("p")); 
}); 
+1

另外,OP可能希望'insertAfter()',而不是'appendTo()'。 – JJJ 2012-07-17 15:33:09

+0

@Juhana是的,你可能是正确的..更新我的答案...谢谢 – ManseUK 2012-07-17 15:35:22

+0

@thirtydot - 这是非常具有讽刺意味的 - 我刚刚发布了一个答案告诉某人添加'var'关键字以防止污染全局命名空间 - 然后我做它....感谢编辑... – ManseUK 2012-07-17 16:08:46