为什么jQuery过滤器脚本在IE中很慢,但在Chrome,Firefox,Opera中很快

时间:2012-03-31 04:01:27

标签: jquery cross-browser

Dutch page containing DIV blocks which can be hidden using a jQuery script.

如果您使用 IE 查看此页面,您会注意到过滤(隐藏/取消隐藏DIV非常慢

我使用的是IE 8,Opera 11,Firefox 11,Chrome 18。

使用任何其他浏览器: Chrome Firefox Opera 更快

  • 任何博德都可以告诉我为什么会这样吗?

  • 或者,有人可以提出建议,使其在IE中更具响应性吗?

这是我用来执行过滤的代码段:

<form class="searchBox">
   Zoek naar <input type="text" name="filterargument" id="filterargument" />
   <input type="button" name='filterbutton' id='filterbutton' value="filter..." />
   <i>(deel van de) clubnaam , de federatie of het clubnr</i>
</form>

<script type="text/javascript">
   var $filterArgument =  $("#filterargument");

   $('#filterargument').keyup( function() { performFilter(); });
   $('#filterbutton').click( function() { performFilter(); });

   function performFilter() {
      var filterArgument = $filterArgument.val();

      if (filterArgument === '') {
         $('.filterbaar').show(); }
      else {
         $('.filterbaar:not(:icontains("' + filterArgument + '"))').hide();
         $('.filterbaar:icontains("' + filterArgument + '")').show();
      }
   }
</script>
</div>

2 个答案:

答案 0 :(得分:1)

我没有任何版本的IE测试,但请告诉我这是否表现更好:

<script type="text/javascript">
$(function() {

 var $filterArgument =  $("#filterargument");

 $('#filterargument').keyup( function() { performFilter(); });
 $('#filterbutton').click( function() { performFilter(); });

    function performFilter() {

        var searchFor = $filterArgument.val();

        $('.filterbaar').each( function() {
            var text = $(this).text();
            regex = new RegExp(filterArgument,"gi");

            if ( text.match(regex) ) {
                $(this).show(); 
            } else {
                $(this).hide();
            }

        });
    }


});
</script>

答案 1 :(得分:0)

简单地说:IE JavaScript的性能相当差。它在IE9中有所改进,但仍然比你提到的浏览器慢得多。 http://ejohn.org/blog/javascript-performance-rundown/

也就是说,您可以对JavaScript进行一些改进以帮助IE出来:http://blogs.msdn.com/b/ie/archive/2006/08/28/728654.aspx