2015-06-03 51 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中生成。