您好我有这个jQuery代码:
$('#myid').click(function() {
var data = {
action: 'xxx_ajax_response',
xxx_ajax_response_nonce: the_ajax_script.xxx_ajax_response_nonce
};
//do an ajax request
$.post(the_ajax_script.ajaxurl, data, function(response) {
$(this).next().slideToggle();
});
//return false;
});
如何在AJAX功能仍在执行/加载时暂时禁用click事件?但是在成功加载AJAX后恢复点击?我尝试过更改类,但我使用的是id选择器,但不起作用。有一个简单的方法吗?谢谢。
答案 0 :(得分:1)
只需在click
回调函数之外设置一个标志变量:
var _doing_ajax = false;
$('#myid').click(function() {
if ( _doing_ajax ) {
return false;
}
var data = {
action: 'xxx_ajax_response',
xxx_ajax_response_nonce: the_ajax_script.xxx_ajax_response_nonce
};
_doing_ajax = true;
//do an ajax request
$.post(the_ajax_script.ajaxurl, data, function(response) {
$(this).next().slideToggle();
_doing_ajax = false;
});
//return false;
});
基本上,您定义了一个新的局部变量,默认值设置为false
。在.click()
回调函数的开头,检查标志变量的值 - 如果为true,则返回false。在启动AJAX请求之前,将变量设置为true
。完成AJAX调用后,再次将变量设置为false
,这样任何进一步的点击都会再次启用AJAX。
答案 1 :(得分:0)