点击后重复调用功能

时间:2013-04-20 12:23:52

标签: jquery refresh

我的代码有什么问题,我想要的只是在点击时调用一个函数然后再每5秒重复一次?

$("#ref").on("click", ".mc", function(event) {
   var ref_id = $(this).attr('ref_id');
      return getRef(ref_id);
      window.setInterval(function(ref_id){
       getRef(ref_id);
      }, 5000);
});

如何在次要点击时删除setInterval?

感谢任何提示!

2 个答案:

答案 0 :(得分:1)

忽略函数return getRef(ref_id);之后的所有内容。

您可能应该删除return关键字。

答案 1 :(得分:1)

  

我的代码有什么问题

您的代码永远不会接到setInterval的来电,因为您的

return getRef(ref_id);

行结束了该功能。

  

如何在辅助点击中删除setInterval?

记住你是否有一个正在运行。 setInterval会返回一个“计时器句柄”,这是一个非0的数字,您可以使用它来将其关闭。因此,您可以使用一个初始化为0的变量来记住您是否正在运行计时器(并记住句柄以便关闭它):

(function() {
    // A handle for setInterval, 0 = not set
    var timer = 0;

    $("#ref").on("click", ".mc", function(event) {
       if (timer) {
          // Timer is set, cancel it
          clearInterval(timer);
          timer = 0;
       }
       else {
          // Timer is not set, set it
          var ref_id = $(this).attr('ref_id');
          // No `return` on the next line, it ends the function
          getRef(ref_id);
          timer = window.setInterval(function(ref_id){
             getRef(ref_id);
          }, 5000);
       }

       // If you need to return something from the click (for instance,
       // `false`), do so here
    });
})();

在上面我假设您在停止计时器时根本不想打电话给getRef