为什么如果我取消评论页面不再显示P元素?
<body>
<div>
<p>content</p>
</div>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
<!--
for (var i = 0; i < 10; i++) {
var $p = $("div > p:last-child");
$p.clone().attr("nome", "p_" + i).text("nome p_" + i).appendTo($p);
/*
if (i == 9) {
$("div > p:first-child").remove();
}
*/
}
//-->
</script>
答案 0 :(得分:1)
您的div
始终只有一个p
子项,您可以将其他p
个元素添加到其中。
所以这些总是相同的:
$("div > p:last-child");
$("div > p:first-child");
执行此操作时:
$("div > p:first-child").remove();
...你基本上删除了附加到的所有内容:
$("div > p:last-child");
如果您不想要此行为,请将新的p
元素附加到div
本身:
$p.clone().attr("nome", "p_" + i).text("nome p_" + i).appendTo('div');
答案 1 :(得分:1)
问题是你将第一段的克隆附加到第一段 - 这是div中唯一的直接子句;因此,当您删除last-child时,它与第一个相同,并删除所有其他嵌套克隆。请尝试附加到div。
$p.clone().attr("nome", "p_"+i).text("nome p_"+i).appendTo('div');
答案 2 :(得分:1)
以下是有关appendTo的文档:http://api.jquery.com/appendto/
您要在段落中添加内容,而不是在其后。
<p>content [appended paragraphs are going here]</p>
然后您选择该段落并将其删除。如果要删除内容段落中的第一段,则需要将选择器更改为
div>p>p:first-child
答案 3 :(得分:0)
无论是否有评论,该页面对我来说都是完全相同的。
答案 4 :(得分:0)
你也可以使用追加而不是追加到
for (var i = 0; i < 10; i++) {
var $p = $("div > p:last-child");
$('div').append($p.clone().attr("nome", "p_" + i).text("nome p_" + i));
if (i == 9) {
$("div > p").first().remove();
//$("div > p:first-child").remove()
}
}
答案 5 :(得分:0)
感谢wveryone我以这种方式解决了:
var $p = $("div>p:last-child");
$p.clone().attr("nome", "p_"+i).text("nome p_"+i).insertAfter($p);
if (i==9) {$("div>p:first-child").remove();
最后一个代码在第一个p中出现了p dinamam。