轮询和点播功能

时间:2014-07-30 12:34:48

标签: javascript jquery

我有一个轮询服务器的JQuery函数。我现在想在加载图标上添加一个onClick功能,这样如果用户按下该图标,它将按需刷新。 轮询工作正常,直到我按下图标。然后它停止轮询,每次按下图标,它都会创建两倍的呼叫。所以第一次1,第二次2第三次4,依此类推。我是一个JQuery新手所以我不确定我是否应该为刚刚轮询创建两个函数,一个用于刷新。

var DO_POLLING = {

    load: function doPoll(poll) {
     //This part of the call is a PlayFramework spefic part but it works the same as vanila jquery
     var ajax = jsRoutes.controllers.AjaxApplication.getAjaxReceipts(ll).ajax ( {
      beforeSend : function () {
        //
      },
      success : function ( data ) {
        //
      },
      complete : function ( data ) {
        //
      },
      always : function ( data ) {
        if(poll){
          setTimeout(doPoll,30000);
        }
      },
      error : function ( ) {
        //
      }
    }
    );

    //This is called when the refresh icon is called
    $('#wid-id-2 i.fa-refresh').click( function() {
      doPoll(false)
    })
}
}

$(document).ready(function () {
   DO_POLLING.load(true);
});

1 个答案:

答案 0 :(得分:1)

每次调用doPoll方法时,您都会添加一个点击处理程序。

您需要重新构建对象,因此init方法将执行绑定,另一个将执行轮询或仅在重新绑定之前取消绑定处理程序

所以简单的解决方案就是

$('#wid-id-2 i.fa-refresh').unbind('click').click( function() {
  doPoll(false);
});