javascript - 在我的 jQuery 表达式中使用 "setTimeout()"

标签 javascript jquery settimeout

我正在尝试将 JavaScript 函数 setTimeout() 添加到我的 jQuery 表达式中。如果没有 setTimeout(),当我在文本框中输入文本时,我的函数会加载包含更新信息的部分 View 。但是,它会在每次击键时加载信息。我的逻辑是,如果我可以放入一个计时器,那么当用户停止输入时,数据会在一秒钟后更新。

如您所见,我尝试放入一个 setTimeout(),但它似乎不起作用。

$(function() {
    $('#DocId').live('keyup', function() {
        setTimeout(var styleValue = $(this).val();
        $('#tableContent').load(
        '/CurReport/TableResults', 
        { style: $(this).val()}), 1000);

    }),
});

谢谢,

亚伦

最佳答案

您可以使用 .data()并放入一个延迟计时器来重置每次击键,如下所示:

$('#DocId').live('keyup', function() {
  clearTimeout($.data(this, 'timer'));
  var val = $(this).val();
  var wait = setTimeout(function() {
    $('#tableContent').load('/CurReport/TableResults', { style: val });
  }, 1000);
  $(this).data('timer', wait);
});

这会在每次键入它的元素上设置 1 秒的超时(可以同时进行任意数量的操作)。每次击键都会清除前一个计时器并设置一个新计时器,因此只有在 1 秒未键入后才会触发该功能。

注意:不要删除 var val = $(this).val(); 部分,您需要变量,因为 this 是不同的上下文函数实际执行。

关于javascript - 在我的 jQuery 表达式中使用 "setTimeout()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524180/

相关文章:

javascript - 如何隐藏数据属性

javascript - 滚动到溢出 div 中的内容

c# - 我如何在 C# 中实现 JavaScript 的 setTimeout 之类的东西?

javascript - setTimeout 阻止事件循环

javascript - Webstorm 崩溃,我的所有设置都消失了

javascript - 如何设置 grunt 项目?

javascript - 对两个单独的元素应用相同的切换

javascript - 如何解决与 Provider 我的商店链接并将数据传递到 Redux-React 应用程序中的组件的问题?

javascript - Bootstrap 3 网格轮播

jquery - 将 setTimeout 添加到现有 jQuery 脚本的语法问题