2013-06-06 66 views
0

我試圖銷燬頁面加載的元素。jQuery銷燬元素不工作

這裏是我的jQuery:

<script type="text/javascript"> 
    var amount = 0; 
$('li.<?php echo $username ;?>').each(function() { 
    amount++ 
    if (amount > 1) { 

     $(this).destroy(); 
    } 
}); 

</script> 

出於某種原因.destory不起作用。我將列表項目限制爲1,但上面仍會生成所有列表項目。

我已經通過使用.remove解決了這個問題。唯一的問題是,有成千上萬的元素要加載,並且仍然在dom中加載。這會導致加載時間很長。

我還有什麼可以嘗試的任何想法?

乾杯, 丹

+0

你確定你的'$ username'變量嗎? – Brewal

+0

,這工作正常,好像我使用.remove或.hide它做的工作 – danyo

+0

看看這裏:http://stackoverflow.com/questions/1391793/how-to-destroy-a-dom-element-with- jquery –

回答

1

首先,你應該使用remove()方法,而不是破壞。那麼它取決於你在哪裏包含腳本。如果你已經在你的HTML的頭部包含它,你需要等待DOM做好準備,使用$(文件)。就緒(..)像這樣:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    var amount = 0; 
    $('li.foo').each(function() { 
     amount++ 
     if (amount > 1) { 
     $(this).remove(); 
     } 
    }); 
    }) 
</script> 
+0

完美,謝謝! – danyo

+0

雖然它仍然加載列表項......但在頁面加載後確實會刪除它們 – danyo

+0

沒問題:)請接受回答 – user2372628

0

試試這個

$(this).remove(); 

,而不是破壞

+0

,我正在使用.remove。這並不會阻止在dom中加載元素。 – danyo

0

相反的amount++你應該使用:first在你的選擇器中。

例如$('li.<?php echo $username ;?>:not(:first)')

我想,而不是刪除每個元素單獨應儘量消除他們的父母只是因爲如果刪除父那麼它的所有的孩子將被自動刪除。

嘗試刪除ul而不是單獨的每個元素。

現在,如果你不想刪除第一個元素,那麼你使用http://api.jquery.com/clone/克隆它在某些變量中,然後刪除父ul之後就可以再次創建ul,然後將克隆li進去。

刪除父母會比單獨刪除每個孩子更有效。