jQuery destroy元素不起作用

时间:2013-06-06 07:58:03

标签: php jquery

我试图在页面加载时销毁元素。

这是我的jQuery:

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

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

</script>

出于某种原因.story不起作用。我将列表项限制为1,但上面仍会生成所有列表项。

我通过使用.remove解决了这个问题。唯一的问题是,有数千个要加载的元素,并且仍然在dom中加载。这导致非常长的加载时间。

关于我还能尝试什么的任何想法?

干杯, 丹

3 个答案:

答案 0 :(得分:1)

首先,你应该使用remove()而不是destroy。然后它取决于您包含脚本的位置。如果你已将它包含在HTML的头部,则需要等待DOM准备就绪,使用$(document).ready(..),如下所示:

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

答案 1 :(得分:0)

试试这个

$(this).remove();

而不是销毁

答案 2 :(得分:0)

而不是amount++,您应该在选择器中使用:first

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

我认为不应单独删除每个元素,而应仅尝试删除其父元素,因为如果删除父元素,则会自动删除所有元素。

尝试逐个删除ul而不是每个元素。

现在,如果您不想删除第一个元素,那么可以使用http://api.jquery.com/clone/将其克隆到某个变量中,然后在删除父ul之后再次创建ul然后插入将li克隆到其中。

删除父级将比单独删除每个子级更有效。