暂时禁用jQuery中的某些绑定操作

时间:2011-12-08 03:25:24

标签: javascript jquery ajax

当一个字段被聚焦或模糊时,会触发一个jQuery Ajax请求。如果已经调用了请求,我不希望触发Ajax请求。这就是我所拥有的:

$('#domain').bind('change focus blur', function() {
    // Disable the "bind" here
    $.getJSON(theURL, '', function(data) {
      ...
    });
    // Re-enable the "bind" here
});

3 个答案:

答案 0 :(得分:1)

unbind怎么样?

function handler() {
    $('#domain').unbind('change focus blur', handler);

    $.getJSON(theURL, '', function(data) {
        // ...

        $('#domain').bind('change focus blur', handler);
    });
}

$('#domain').bind('change focus blur', handler);

答案 1 :(得分:0)

设置一个超出bind函数范围的变量,并使用它来跟踪请求是否正在进行中。确保仅在json返回后重新启用。如果您重新启用您的评论,请求仍然可以正在进行,但执行将继续超出getJson调用。

var blocking = false;
    $('#domain').bind('change focus blur',function(){
        if(!blocking)
        {
             blocking = true;
             $.getJSON(theURL,'',function(data){
                blocking = false;
            });

            // Re-enable the "bind" here - no, not here. you should re-enable on the callback from the ajax call. 
        }
    });

答案 2 :(得分:0)

$('#domain').bind('change focus blur',function(){

    //check if blocked        
    if ($(this).data("blocked")) return;

    // Disable the "bind" here
    $(this).data("blocked", 1);

    $.getJSON(theURL,'',function(data){

    });
    // Re-enable the "bind" here
    $(this).data("blocked", 0);
});