1点击后禁用jquery功能,以防止多次执行

前端之家收集整理的这篇文章主要介绍了1点击后禁用jquery功能,以防止多次执行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下功能,它获取默认情况下显示的超过20的更多注释
$('.more_comments_link').live('click',function() {
        $(".more_comments_link").text("Fetching More Comments ...");

        var ajaxOpts = {
            type: "get",url: "ajax_getcomments.PHP",dataType: 'json',data: "&itemid=<? echo $id; ?>&type=1&owner=<? echo $event["data"]["e_creator"]; ?>&more=1",success: function(data) {
                $('.discussion-more').after(data);
                $(".discussion-more").hide();
            }
        };

        $.ajax(ajaxOpts);
        return false;
    });

它的工作原理是唯一的问题是,用户可以快速点击3次按钮,它会向ajax_getcomments.PHP发送3个请求,每次获取相同的结果集.

我尝试添加

$(".more_comments_link").unbind('click');

但它没有做任何事情.

初始结果集也用jquery获取,因此Im使用.live(点击“

不知道它与为什么它不工作有任何关系.

解决方法

活不起作用 – 你需要 die.

但是有一个更好的解决方案.由于您可能希望能够多次更新内容,因此您可以设置一个变量来查看请求是否正在运行:

var requestRunning = false;
$('.more_comments_link').live('click',function () {
    if (requestRunning) { // don't do anything if an AJAX request is pending
        return;
    }

    $(".more_comments_link").text("Fetching More Comments ...");

    var ajaxOpts = {
        type: "get",data: "&itemid=<? echo $id; ?>&type=1&owner=<? echo $event["
        data "]["
        e_creator "]; ?>&more=1",success: function (data) {
            $('.discussion-more').after(data);
            $(".discussion-more").hide();
        },complete: function() {
            requestRunning = false;
        }

    };

    requestRunning = true;
    $.ajax(ajaxOpts);
    return false;
});

猜你在找的jQuery相关文章