当一个字段被聚焦或模糊时,会触发一个jQuery Ajax请求。如果已经调用了请求,我不希望触发Ajax请求。这就是我所拥有的:
$('#domain').bind('change focus blur', function() {
// Disable the "bind" here
$.getJSON(theURL, '', function(data) {
...
});
// Re-enable the "bind" here
});
答案 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);
});