我目前正在网页上执行突出显示功能,我为此使用了 jquery 插件。我的代码如下所示:
var input = function() {
var matchword = $('#searchbox').val();
if(matchword != "") {
$('body').removeHighlight();
$('body').highlight($('#searchbox').val());
}
}
$(document).ready(function() {
$('#searchbox').keyup(function() {
setTimeout("input()", 2000);
});
});
如果页面上没有那么大的数据,它工作正常。但是如果页面上有大量数据,整个过程就会变慢,这会导致输入框卡住,直到字母被突出显示。所以打字不是很流畅。我尝试使用 setTimeout,但似乎无济于事。有什么想法吗?
最佳答案
请不要向setTimeout
传一个字符串,这种情况下没有必要,你可以像这样直接调用该函数:
$(function() {
$('#searchbox').keyup(function() {
if($(this).data("timeout")) clearTimeout($(this).data("timeout"));
$(this).data("timeout", setTimeout(input, 2000));
});
});
至于排队亮点的另一个问题,你只需要像上面那样先清除之前的超时(最多2秒前)。此外,您可以使用 .data()
将此超时本地存储在元素上就像我上面所说的那样,更少的全局变量,你可以在许多元素中使用它,而不是为每个元素使用一个超时变量。
关于Javascript:setTimeout() - 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2584329/