Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 需要帮助加速IE的标记云过滤器吗_Javascript_Jquery - Fatal编程技术网

Javascript 需要帮助加速IE的标记云过滤器吗

Javascript 需要帮助加速IE的标记云过滤器吗,javascript,jquery,Javascript,Jquery,关于如何在IE中加快过滤速度的想法(过滤过程在Firefox中表现不错,但在IE中几乎无法使用)。基本上,它是一个带有过滤文本框的标记云,用于过滤云 <html> <head> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function

关于如何在IE中加快过滤速度的想法(过滤过程在Firefox中表现不错,但在IE中几乎无法使用)。基本上,它是一个带有过滤文本框的标记云,用于过滤云

<html>

<head>

<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){


        $('#tagFilter').keyup(function(e) { 
            if (e.keyCode==8)
            {   
                $('#cloudDiv > span').show();
            }

            $('#cloudDiv > span').not('span:contains(' + $(this).val() + ')').hide(); 
        });

    });
</script>

</head>


<body>
<input type="text" id="tagFilter" />
<div id="cloudDiv" style="height: 200px; width: 400px; overflow: auto;">
<script type="text/javascript">

for (i=0;i<=1300;i++)
{
    document.write('<span><a href="#">Test ' + i + '</a>&nbsp;</span>');
}
</script>
</div>

</body>
</html>

$(文档).ready(函数(){
$('#tagFilter').keyup(函数(e){
如果(e.keyCode==8)
{   
$('#cloudDiv>span').show();
}
$('#cloudDiv>span').not('span:contains('+$(this.val()+')).hide();
});
});

对于(i=0;i而不是做1300个文档),尝试创建一个级联的字符串并进行1次写入。这可能有助于如果是文档。减慢IE.

的写入以及所说的,考虑使用<代码> jQuery的AppEnter()/Cux>方法(或至少非jQuery等效)。

< P>因为标签应该是唯一的。(将标记“awesome”放在云中两次是没有意义的),根据标记字符串的清理版本为每个跨度指定一个“id”值(用下划线等替换空格)。这会使事情变得更快,因为过滤器只需按“id”值进行过滤

事实上,您甚至不需要过滤器:只需隐藏云中的所有
元素,然后显示由当前字段值形成的带有“id”值的元素。如果没有,则没有,但如果有,则速度非常快。

  • 避开子选择器,它很慢
  • 基于包含的文本进行选择可能更慢。要么使用类名存储标记信息,要么在javascript中构建某种数据结构(看看jQuery data()函数)
  • 无需显示然后重新隐藏几乎所有跨距。使用:可见选择器
  • 在进行更改后,分离()cloudDiv和append()可能会有所帮助
  • <> LI>你可以考虑在KEYUP上设置一个定时器,而不是立即显示/隐藏东西。这样你就可以等待用户完成打字了。
很抱歉在OP中没有这样说(虽然刚刚更新了它),但我对过滤过程性能更感兴趣。但这仍然很有用。谢谢。$(“#cloudDiv>span:not(:contains(+$(this).val()+)”);选择器会不会然后更改?@rod uhh…选择器?哦,你是说在过滤器中?是的,肯定-你可能只选择“span”,然后
。而不是(“#”+makeTagId($(this.val()))
或其他任何东西。就像Tgr写的那样,不要为“>”这件事操心。有办法继续使用“contains”吗当用户键入关键字时,这是否违背了按id搜索的目的?这有什么意义?如果你有“id”值,你就有了唯一的标识符,这比要求浏览器挖掘节点的DOM内容要好得多。