JQuery清除队列事件

问题描述:

我正在使用colorpicker。 我的想法是通过Ajax请求更新MySQL数据库,同时单击colorpicker中的颜色。 我正在使用farbtastic colorpicker。 我的问题是,如果您在按钮关闭时移动鼠标,我有很多请求,因为颜色正在改变(我希望很清楚会发生什么)。 这是我的代码:JQuery清除队列事件

$('.colorpicker').live('click', function() { 
    $this = $(this); 
    $.farbtastic('#picker').linkTo(function(color){ 
      $this.css({'backgroundColor':color}); 
      $.ajax({ 
        type:"GET", 
        url:"data.php?color="+color, 
        success: function(data){ 
        /* SOME EVENTS */ 
        } 
      }); 
    }); 
    return false; 
}); 

.colorpicker这是我的div(如果我改变背景颜色)

#picker它的farbstatic颜色拾取

如何 “跳过” 所有(AJAX)请求,同时点击和移动鼠标?我只想捕捉“mouseup”之前的最后一个请求?

+0

[使用jQuery使用JavaScript杀死Ajax请求]的可能重复(http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery) – zerkms 2012-04-04 10:55:26

我会使用隐藏的字段或JavaScript变量来捕获所选的颜色,然后用鼠标点燃ajax请求。类似这样的:

var colorselected = null; 

$('.colorpicker').live('click', function() { 
    $this = $(this); 
    $.farbtastic('#picker').linkTo(function(color){ 
     $this.css({'backgroundColor':color}); 
     colorselected = color; 
    }); 
    return false; 
}); 

$("#picker").mouseup(function() { 
    $.ajax({ 
    type:"GET", 
    url:"data.php?color="+colorselected, 
     success: function(data){ 
     /* SOME EVENTS */ 
     } 
    }); 
}); 

这应该避免所有不必要的ajax请求。

+0

谢谢。我以这种方式解决了问题;-) – 2012-04-25 00:23:03