我有以下功能,它获取默认情况下显示的超过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; });