Почему jQuery-скрипт работает медленно в IE, но быстро в Chrome, Firefox, Opera - PullRequest
0 голосов
/ 31 марта 2012

Голландская страница, содержащая DIV блоки, которые можно скрыть с помощью скрипта jQuery.

Если вы посмотрите на эту страницу с 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 ]

1 голос
/ 31 марта 2012

У меня нет версии 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>
0 голосов
/ 31 марта 2012

Проще говоря: производительность IE JavaScript довольно низкая.Он улучшен в IE9, однако все еще сравнительно медленнее, чем упомянутые вами браузеры.http://ejohn.org/blog/javascript-performance-rundown/

Тем не менее, вы можете внести некоторые улучшения в свой JavaScript, чтобы помочь IE: http://blogs.msdn.com/b/ie/archive/2006/08/28/728654.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...