window.setInterval 在这里正确使用还是我引入了麻烦?
Is window.setInterval correctly used here or am I introducing trouble?
我有一个来自第三方的搜索输入.searchinp
,我无法修改。但我想将结果从页面左侧移动到右侧。我目前使用 setInterval
来执行此操作。我使用此 setInterval
的原因是我要移动的 div 在加载时页面上不存在。因此,我不能简单地移动它。
用户需要至少填写3个字母才能创建结果div.dropdown-menu
。
所以为了让它移动,我使用了这个:
window.setInterval(function(){
/// call your function here
$('.dropdown-menu').contents().appendTo('.knowledgebase-related-questions');
}, 100);
哪个可行,但我想知道这样做是否有缺点?比如网站速度、迟缓或其他缺点。
如果是我,我会为用户正在输入的输入添加一个侦听器并设置延迟,以便在用户停止输入 X 秒后调用我的函数。像这样:
var keyupDelay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
var inputSelector = '#some-id'; // adjust as needed
$(inputSelector ).keyup(function() {
keyupDelay(function(){
// append or replace your html as needed
}, 2500 ); // this will trigger 2.5 seconds after typing stops, adjust as needed
});
我有一个来自第三方的搜索输入.searchinp
,我无法修改。但我想将结果从页面左侧移动到右侧。我目前使用 setInterval
来执行此操作。我使用此 setInterval
的原因是我要移动的 div 在加载时页面上不存在。因此,我不能简单地移动它。
用户需要至少填写3个字母才能创建结果div.dropdown-menu
。
所以为了让它移动,我使用了这个:
window.setInterval(function(){
/// call your function here
$('.dropdown-menu').contents().appendTo('.knowledgebase-related-questions');
}, 100);
哪个可行,但我想知道这样做是否有缺点?比如网站速度、迟缓或其他缺点。
如果是我,我会为用户正在输入的输入添加一个侦听器并设置延迟,以便在用户停止输入 X 秒后调用我的函数。像这样:
var keyupDelay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
var inputSelector = '#some-id'; // adjust as needed
$(inputSelector ).keyup(function() {
keyupDelay(function(){
// append or replace your html as needed
}, 2500 ); // this will trigger 2.5 seconds after typing stops, adjust as needed
});