我试图在页面加载时销毁元素。
这是我的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中加载。这导致非常长的加载时间。
关于我还能尝试什么的任何想法?
干杯, 丹
答案 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
克隆到其中。
删除父级将比单独删除每个子级更有效。