Javascript wierd错误:每次单击都会多次执行代码
我有一个类似的评论系统 当我点击like链接时,有时效果很好,但有时每次点击最多发送8-9个请求!我在另一个使用keydown事件的jquery代码上也遇到了同样的问题Javascript wierd错误:每次单击都会多次执行代码,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个类似的评论系统 当我点击like链接时,有时效果很好,但有时每次点击最多发送8-9个请求!我在另一个使用keydown事件的jquery代码上也遇到了同样的问题 <a href="javascript:void(0);" class="like_comment" ><?php echo $likeLable; ?></a> $('.like_comment').live('click', function () { var pa
<a href="javascript:void(0);" class="like_comment" ><?php echo $likeLable; ?></a>
$('.like_comment').live('click', function () {
var parent = $(this).parent();
var comment_id = parent.parent().find('.comment_id').val();
parent.fadeOut(200);
$.post("<?php echo base_url(); ?>album/like", {
comment_id: comment_id
},
function (data) {
if ($.trim(data) == 'ok') {
var like_span = parent.parent().find('.like_counter');
var like = parseInt(like_span.text()) + 1;
like_span.text(like);
parent.html('<a href="javascript:void(0);" class="unlike_comment" ><?php echo $unlikeLable; ?></a>');
parent.fadeIn(200);
return false;
} else {
parent.fadeIn(200);
alert(data);
}
})
})
$('.like_comment').live('click',函数(){
var parent=$(this.parent();
var comment_id=parent.parent().find('.comment_id').val();
母公司淡出(200);
$.post(“相册/类似”{
注释id:注释id
},
功能(数据){
如果($.trim(数据)=‘正常’){
var like_span=parent.parent().find('.like_counter');
var like=parseInt(like_span.text())+1;
like_span.text(like);
html(“”);
家长:fadeIn(200);
返回false;
}否则{
家长:fadeIn(200);
警报(数据);
}
})
})
此代码有什么问题吗?尝试从事件处理程序返回
true
,表示您已处理该事件。那样就没人会把它捡起来
如果这不起作用,那么您可能正在为同一事件注册多个事件侦听器。使用您喜爱的调试器暂停javascript执行,然后使用控制台检查相关dom元素上的所有事件侦听器。尝试从事件处理程序返回
true
,表示您已处理该事件。那样就没人会把它捡起来
如果这不起作用,那么您可能正在为同一事件注册多个事件侦听器。使用您喜爱的调试器暂停javascript执行,然后使用控制台检查相关dom元素上的所有事件侦听器。如果不查看其余代码和不知道单击应用于哪个元素,则很难知道,因此以下3种解决方案之一可以工作:
$('.like_comment').on('click',function(e) {
//do something
e.preventDefault(); // stops default button action, e.g. submitting a form
e.stopPropagation(); // stops event bubbling back to parent element
}
return false; /// stops default link action
});
顺便说一句,live现在已被弃用,取而代之的是“on”。如果不查看代码的其余部分,不知道单击应用于哪个元素,则很难知道,因此以下3种解决方案之一可以工作:
$('.like_comment').on('click',function(e) {
//do something
e.preventDefault(); // stops default button action, e.g. submitting a form
e.stopPropagation(); // stops event bubbling back to parent element
}
return false; /// stops default link action
});
顺便说一句,live现在已被弃用,取而代之的是“on”