0

我试图在页面加载时破坏元素。

这是我的 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 中加载。这会导致加载时间非常长。

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

干杯,丹

4

3 回答 3

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>
于 2013-06-06T08:08:44.870 回答
0

而不是amount++你应该:first在你的选择器中使用。

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

我认为与其单独删除每个元素,不如只尝试删除它们的父元素,因为如果你删除父元素,那么它的所有子元素都将被自动删除。

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

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

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

于 2013-06-06T08:19:51.857 回答
0

尝试这个

$(this).remove();

而不是破坏

于 2013-06-06T08:04:09.507 回答