2012-04-04 139 views
1

我正在使用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

回答

2

我會使用隱藏的字段或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