gpt4 book ai didi

jQuery 在 IE 中非常慢

转载 作者:行者123 更新时间:2023-12-01 03:52:40 26 4
gpt4 key购买 nike

我编写了一段代码来过滤元素列表。

HTML:

<div id="ms-simpleCountries" class="ms-container">
<div class="ms-selectable"><ul><li style="display: none;" ms-value="fr">France</li><li style="display: none;" ms-value="ca">Canada</li><li ms-value="ar">Argentina</li><li ms-value="pt">Portugal</li></ul></div>
<div class="ms-selection"><ul><li ms-value="fr">France</li><li ms-value="ca">Canada</li></ul></div>
</div>

Javascript:

function filterAvailable()
{
var filterText = "ca"; // <-- string used to filter


var a_val;
var a_txt;
$('.ms-container .ms-selectable li').each (function () {

// valore elemento disponibile corrente
a_val = $(this).attr('ms-value'); // ca
a_txt = $(this).text(); // canada

// --
if ($('.ms-container .ms-selection [ms-value="' +a_val +'"]').length > 0)
{
$(this).hide();
}
else
{
if ($(this).text().toUpperCase().indexOf(filterText) >= 0)
{
$(this).show();
}
else
{
$(this).hide();
}
}

});//each

}//end

我用“ms-selectable”类中大约 500 个

  • 元素测试了这段 JavaScript 代码。在我的 IE8 中,这段代码运行时间为 10000 毫秒,而在 FF 中,这段代码运行时间为 1000 毫秒!如何在 IE 中执行此任务?

    谢谢!

  • 最佳答案

    循环,特别是那些与 DOM 交互的循环,通常可能会导致旧版浏览器的性能下降。您可以通过确保您的选择器按照不间断时间旅行的建议进行更优化来帮助解决问题。不要一遍又一遍地重复 $(this),而是将元素缓存在变量中:

    var $this = $(this);

    此外,通过使用常规的“for”循环,而不是 jQuery 的 $.each() 方法,通常可以获得相当大的性能提升:

    function filterAvailable () {
    var filterText = 'ca';
    var items = $('.ms-container .ms-selectable li');
    var $currentItem;
    var a_val;
    var a_txt;

    for (var i = 0, j = items.length; i < j; i++) {
    $currentItem = $(items[i]); // in place of $(this)

    // Contents of $.each() loop here
    }
    }

    jsPerf 上有很多测试支持这一点:http://jsperf.com/jquery-each-vs-for-loop/186

    重要的是要记住,任何 DOM 交互(包括查找)都很慢。当您的页面中有大量标记时尤其如此。您可以通过使用 ID、缓存选择器、最小化 DOM 交互以及使用常规 for 循环来加快速度。以下是 Nicholas Zakas 的精彩综述: http://jonraasch.com/blog/10-javascript-performance-boosting-tips-from-nicholas-zakas

    关于jQuery 在 IE 中非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6570053/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com