我目前正在网页上执行突出显示功能,并为此使用 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() http://api.jquery.com/data/就像我上面的那样,全局变量更少,您可以在许多元素中使用它,而不是为每个元素使用超时变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)