我试图在多个div中删除带有条件的符号。
<div>
<ul>
<li class="sel">.....</li>
<li class="sel">.....</li>
............
<li>.....</li>
<li>.....</li>
...........
<!-- I have some 600 li's -->
</ul>
</div>
我与class='sel'
有200个li。现在我需要删除剩下的400个li。
我试图以两种方式删除,例如,
$("ul", this).each(function(){
$("li", this).each(function(){
$(this).remove();
//Also tried with -- $(this).empty().remove();
});
});
其他方式,
$("ul", this).each(function(){
$("li[class!=sel]", this).remove(); // Also tried with 'not'
});
现在的问题是,当我尝试执行这些方法时,在IE中遇到脚本重载错误。
请帮我解决其他删除不需要的邮箱的方法。
注意:我不想让不想要的li保持hide()状态。
提前致谢...
答案 0 :(得分:4)
如果您使用的是Attribute Not Equal Selector,则无需将其与.each()
一起打包 - 只需将其称为:
$('li[class!="sel"]').remove();
选择器('li[class!="sel"]'
)抓取所有没有类<li>
的{{1}}个元素,然后在整个元素集上调用sel
方法。< / p>
修改强>
如果您只想定位包含remove()
元素的<ul>
,可以像这样设置上下文:
<li class="sel"></li>
答案 1 :(得分:3)
对于它的价值,几周前我遇到了类似的问题,仅在IE8中,甚至在由id选择的单个项目上调用.remove()。问题仅发生当元素包含大量内容时。
我所做的是在调用.html('')
之前调用.remove()
清除元素。这大大缩短了时间(亚秒)。
我的情况显然是另一种情况(一个元素与多个元素,由id与上下文选择器选择,不确定您的li
内容是什么,等等),但它可能值得一试。
$("ul", this).each(function(){
$("li[class!=sel]", this).html('').remove();
});
答案 2 :(得分:1)
尝试分离ul,删除li,然后重新连接ul。
$("ul", this).detach().find("li").not(".sel").remove().end().end().appendTo(this);
这可以防止浏览器重绘,直到删除所有需要删除的li。