我有以下函数,可以获取超过默认显示的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获取的,因此我使用.live(click'
不确定这是否与它不工作的原因有关。
发布于 2014-03-08 05:45:20
对于一个非常简单的解决方案来说,所有这些解决方案都太复杂了;请按照这里的文档使用.one():
只需将live
更改为one
。如下所示:
$('.more_comments_link').one('click', function() {
发布于 2017-02-20 21:44:13
您可以使用:
$('element').off()
这将禁用您正在侦听的组件的任何事件
发布于 2011-05-20 04:08:13
尝试使用disabled关键字。这样你就不必解除函数的绑定,只需禁止它被按下即可:
$('.more_comments_link').live('click', function() {
$(this).attr("disabled", true);
$(".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;
});
https://stackoverflow.com/questions/6064232
复制相似问题