gpt4 book ai didi

javascript - 如何限制或限制此函数调用中的函数调用次数(以提高性能)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:47 28 4
gpt4 key购买 nike

我有一个看起来像这样的函数:

function someFunction(text) {
$('.class').each(function() {
var $this = $(this);
if ($this.text().match(text)) {
$this.addClass('found');
} else {
$this.removeClass('found');
}
});
}

并且该函数在 keyup 事件中执行,

$('input[type=text]').keyup(function() {
someFunction($(this).val());
});

在 IE 上,如果有很多 .class 元素,它可能会很慢,我认为如果我停止执行 each 调用,如果函数在 each 调用之前再次执行,我可以加快速度完成的。我该怎么做?

最佳答案

您可以通过向 keyup 处理程序添加轻微的延迟来加快此过程,这样 DOM 仅在键入结束后而不是每次击键时受到影响。您还可以使用 :contains 选择器来查找元素。试试这个:

function someFunction(text) {
$('.class').removeClass('found').filter(':contains("' + text + '")').addClass('found');
}

var timer;
$('input[type=text]').keyup(function() {
clearTimeout(timer);
timer = setTimeout(function() {
someFunction(this.value);
}, 100);
});

此外,正如@A.Wolff 所提到的,您可以缓存 .class 选择器,但这只有在没有 .class 元素动态添加到 DOM 时才有效在您搜索时:

var $elements = $('.class');
function someFunction(text) {
$elements.removeClass('found').filter(':contains("' + text + '")').addClass('found');
}

var timer;
$('input[type=text]').keyup(function() {
clearTimeout(timer);
timer = setTimeout(function() {
someFunction(this.value);
}, 100);
});

关于javascript - 如何限制或限制此函数调用中的函数调用次数(以提高性能)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35265375/

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