2012-03-31 7 views
0

Dutch page containing DIV blocks which can be hidden using a jQuery script.jQueryのフィルタスクリプトがIEで遅い理由が、クロム、Firefoxで迅速、オペラ

あなたはIEで、このページを見れば、あなたはフィルタリング(DIVブロックを非表示解除/非表示には、であることがわかりますが非常に遅い

私はIE 8、オペラ11、Firefoxの11、Chromeを使用しています

他のブラウザを使用して:。クロームFirefoxおよびオペラ、それはもっと早くです。

  • これはどのような理由がありますか?

  • また、誰でも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> 
+3

ヒント#1:IE 8以降に影響しますが、IE 9では影響しません。ヒント#2: ':not 'に関連しています。 –

+1

現在使用しているIEのバージョンは? –

+0

と関連のある可能性があります:http://stackoverflow.com/questions/9950813/speed-up-not-jquery-css-selector-in-ie-8 –

答えて

1

私がテストするためにIEのすべてのバージョンを持っているが、これは、より良い実行する場合、私に知らせてはいけない:

あなたがIEを助けるためにあなたのJavaScriptに作ることができるいくつかの改善がある、と述べた http://ejohn.org/blog/javascript-performance-rundown/

<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

ありがとうございました。これは本当に問題を解決します。 IE8でも十分に機能します。小さなエラーを修正する必要がありました(aをaと置き換え、searchForの代わりにfilterArgument変数を使用していましたが、この変更後は今度はオンラインでページを変更しますあなたは私の質問でimmediatlyのページを訪問する必要がありますので、あなたは変更をimmediatlyオンラインで見ることはありません)。おかげで再び、あなたの助けが大歓迎です。 – Edelcom

0

簡単に言えば:IE JavaScriptのパフォーマンスはかなり貧弱です。 IE9では改善されましたが、あなたが言及したブラウザーよりもかなり遅いです。 http://blogs.msdn.com/b/ie/archive/2006/08/28/728654.aspx

+0

これは必ずしも真実ではありません。いずれにせよ、この問題はJavaScriptに関連するものではなく(JSエンジンの観点から見ると、遅くなる可能性はあまりありません)、むしろDOMに関連している可能性があります。 –

関連する問題