Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除性能_Javascript_Jquery_Performance - Fatal编程技术网

Javascript 删除性能

Javascript 删除性能,javascript,jquery,performance,Javascript,Jquery,Performance,我正在尝试移除多个分区中Ul条件下的li <div> <ul> <li class="sel">.....</li> <li class="sel">.....</li> ............ <li>.....</li> <li>.....</li> .......

我正在尝试移除多个分区中Ul条件下的li

<div>
    <ul>
        <li class="sel">.....</li>
        <li class="sel">.....</li>
         ............
        <li>.....</li>
        <li>.....</li>
         ...........
         <!-- I have some 600 li's -->
    </ul>
</div>
换句话说,比如

$("ul", this).each(function(){
    $("li[class!=sel]", this).remove(); // Also tried with 'not'
});
现在的问题是,当我试图在IE中执行这些方法时,会出现脚本重载错误

请帮我找出其他方法来移除不需要的李

注意:我不想保留联合国通缉李的隐藏状态

提前感谢…

如果您正在使用,则不需要用
包装它。each()
-只需这样称呼它:

$('li[class!="sel"]').remove();
// Find the first <li> with class="sel" and get it's parent <ul>
var $ul = $('li.sel:first').parent('ul');

// Use $ul as the context for the removal of the <li> elements
$('li[class!="sel"]', $ul).remove();
选择器(
'li[class!=“sel”]'
)正在抓取所有没有class
sel
  • 元素,然后对整个元素集调用
    remove()
    方法

    编辑

    如果您只想针对包含
  • 元素的
    ,可以如下设置上下文:

    $('li[class!="sel"]').remove();
    
    // Find the first <li> with class="sel" and get it's parent <ul>
    var $ul = $('li.sel:first').parent('ul');
    
    // Use $ul as the context for the removal of the <li> elements
    $('li[class!="sel"]', $ul).remove();
    
    //使用class=“sel”查找第一个
  • ,并获取它的父级
      var$ul=$('li.sel:first').parent('ul'); //使用$ul作为删除
    • 元素的上下文 $('li[class!=“sel”],$ul.remove();
  • 尝试分离ul,移除li,然后重新连接ul

    $("ul", this).detach().find("li").not(".sel").remove().end().end().appendTo(this);
    

    这可以防止浏览器重新绘制,直到需要删除的所有li都被删除。

    值得一提的是,我在几周前遇到了类似的问题,仅在IE8中,甚至对id选择的单个项目调用.remove()。只有当元素包含大量内容时才出现问题

    我所做的是在调用
    .remove()
    之前调用
    .html(“”)
    清除元素。这大大缩短了时间(亚秒)

    我的情况显然不同(一个元素与多个元素,由id与上下文选择器选择,不确定你的
    li
    内容是什么,等等),但可能值得一试

    $("ul", this).each(function(){
        $("li[class!=sel]", this).html('').remove();
    });
    

    他怎么会用选择器传入
    这个
    。“我正在尝试移除多个div中Ul条件下的li。”@Max你能展示div结构的样子吗?我们谈论的是多少div,有多少ul和li?@kevin:我的div和ul是动态的。所以我肯定有超过10个div,但不到20个div。li的内部每个都可以是n个数字,正如我在问题的第二个示例中所示,这就是我所尝试的:我不应该打扰其他ul的li。所以我提到了这个。@Max:我不认为
    这个
    指的是你认为它在上面的上下文中所做的事情。如果需要指定上下文,只需将其添加到选择器中即可。也许更具体地说明您当前的标记将有助于我的澄清。我的应用程序使用的是我们在易趣上看到的过滤器。我选择的过滤器应在每个类别下突出显示。在一个类别中,如果我选择了一个字段,则可以删除该类别下的其余字段。@Max:我更新了答案,以包含一个设置选择器上下文的示例,以便只选择包含
    •