2015-06-03 72 views
0

为什么如果我取消注释页面不再显示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> 
+1

您对此代码有何期待?即期望的输出 – ha9u63ar

+0

通过代码放置所有p并移除第一个p。 – Salvio

+0

而不是使用的话,请把一个例子输出在你的问题的身体 – ha9u63ar

回答

0

有或没​​有评论,页面呈现完全相同的我。

+0

那么带“内容”的p不会消失吗? 对于我没有评论消失的一切。 – Salvio

+0

这不回答的问题,应该已发布为注释 – Turnip

+0

我的意思是当我修改if并将其放在代码中。 – Salvio

1

div始终只有一个直接p孩子,你追加其他p元素。

因此,这些总是相同的:

$("div > p:last-child"); 
$("div > p:first-child"); 

当你这样做:

$("div > p:first-child").remove(); 

&hellip;你已经基本上去除一切附加:

$("div > p:last-child"); 

如果希望这种行为,那么追加新要素pdiv本身:

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

Fiddle

+1

初学者的好解释:) – ha9u63ar

1

问题是你将第一段的克隆追加到第一段 - 这是div的唯一直接子节点;所以当你删除最后一个孩子时,它和第一个孩子真的是一样的,并删除所有其他嵌套克隆。尝试追加到div。

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

http://jsfiddle.net/c41s1b0z/

1

这里是appendTo的文档:http://api.jquery.com/appendto/

你加入内容你的款,之后吧。

<p>content [appended paragraphs are going here]</p> 

然后您选择段落并将其删除。如果你想删除的内容段落内第一款你需要你的选择更改为

div>p>p:first-child 
0

你也可以使用追加没有appendTo

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

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中生成。

相关问题