javascript - window.setInterval 在这里使用正确还是我引入了麻烦?

标签 javascript jquery performance window setinterval

我有一个来自第三方的搜索输入.searchinp,但我无法修改。但我想将结果从页面左侧移动到右侧。我目前使用 setInterval 来执行此操作。我使用这个 setInterval 的原因是我想要移动的 div 在加载时不存在于页面上。因此我不能简单地移动它。

在创建结果 div.dropdown-menu 之前,用户需要填写至少 3 个字母。

为了让它动起来,我用了这个:

      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
});

关于javascript - window.setInterval 在这里使用正确还是我引入了麻烦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59376675/

相关文章:

jquery - JSTree 拖放问题

jquery - 如何延迟显示/隐藏 Bootstrap 工具提示?

performance - Firebug net 选项卡报告的页面接收时间长(页面加载缓慢)

android - 在 Nexus 4 上进行计算量大的数组处理时,会出现周期性的性能峰值是什么原因造成的?

performance - 着色器的性能(顶点 VS 片段)

javascript - 如何将 JavaScript 变量添加到表单操作

javascript - AngularJS 未将 html 加载到 ng-view 中

javascript - 增量运算符和 document.write 函数的工作原理

javascript - 为什么从response.on ("end",回调)打印数据与从response.on ("data",回调)打印数据不同?

jquery - 是否有适用于 jQuery Mobile 的 jqueryUi.mouse.js 版本?