在按钮单击时取消ajax的setInterval

时间:2012-09-20 11:08:15

标签: jquery

我有一系列按钮和foreach按钮我有一个单独的.click(function(){

$("#approved").button().click(function() {
$("#waiting_approval").button().click(function() {
$("#department_waiting_approval").button().click(function() {
$("#department").button().click(function() {

我有ajax的setInterval,用于刷新该div中的数据。 我面临的问题是,一旦用户点击不同的按钮,我想停止当前按钮点击ajax调用并启动新的按钮。

希望这是有道理的,先谢谢。

$("#approved").button().click(function() {

setInterval(function(){
    $.ajax({
  type: "GET",
  url: "holidays/academic_days.php?userid='+$('#approved_list').attr('class')",
  dataType: "html",
  success: function(data) {
    jQuery("#approved_list").fadeOut( 10 , function() {
        jQuery(this).html( data);
        $('#approved_list').show();  
    $('#waiting_approval_list').hide();
            $('#department_waiting_approval_list').hide();
            $('#department_logs').hide();
    }).fadeIn( 100 );

  }
 })
}, 100);

});

2 个答案:

答案 0 :(得分:1)

setInterval函数返回该interval对象的处理程序,稍后可以使用clearInterval清除该间隔,例如:

    var handler = setInterval(function(){
      console.log('interval');
    },1000);

    setTimeout(function(){
      clearInterval(handler);
    },5000);

答案 1 :(得分:1)

这可能会有所帮助:

var thisInterval;
$("#approved").button().click(function() {

   thisInterval=setInterval(function(){
        $.ajax({
      type: "GET",
      url: "holidays/academic_days.php?userid='+$('#approved_list').attr('class')",
      dataType: "html",
      success: function(data) {
        jQuery("#approved_list").fadeOut( 10 , function() {
            jQuery(this).html( data);
            $('#approved_list').show();  
        $('#waiting_approval_list').hide();
                $('#department_waiting_approval_list').hide();
                $('#department_logs').hide();
        }).fadeIn( 100 );

      }
     })
    }, 100);

    });

按这样取消按钮。

$("#cancel").button().click(function() {clearInterval(thisInterval)}