Wordpress AJAX暂时禁用仍在加载的Click事件

时间:2012-12-04 10:13:29

标签: jquery wordpress

您好我有这个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选择器,但不起作用。有一个简单的方法吗?谢谢。

2 个答案:

答案 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)

您可以使用jQuery unbind在加载时从元素中删除事件,然后再次加载数据bind。您在bind jQuery.post()

success内写了$.post()函数

这篇文章可能会有所帮助Best way to remove an event handler in jQuery?