为什么删除删除一切?

时间:2015-06-03 21:47:44

标签: jquery html css

为什么如果我取消评论页面不再显示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>

6 个答案:

答案 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');

Fiddle

答案 1 :(得分:1)

问题是你将第一段的克隆附加到第一段 - 这是div中唯一的直接子句;因此,当您删除last-child时,它与第一个相同,并删除所有其他嵌套克隆。请尝试附加到div。

$p.clone().attr("nome", "p_"+i).text("nome p_"+i).appendTo('div');

http://jsfiddle.net/c41s1b0z/

答案 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()
    }
}

DEMO HERE

答案 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。