我有一个像评论系统
当我点击类似的链接有时它工作正常但有时它每次点击最多发送8-9请求!我在另一个使用keydown事件的jquery代码上遇到了同样的问题
<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);
}
})
})
这段代码有什么问题吗?
答案 0 :(得分:2)
尝试从事件处理程序返回true
以表示您已处理该事件。那样的话别人都不会接受它......
如果这不起作用,那么您可能正在为同一事件注册多个事件侦听器。使用您喜欢的调试器暂停javascript执行,然后使用控制台检查相关dom元素上的所有事件侦听器。
答案 1 :(得分:1)
如果没有看到其余代码并知道应用了哪个元素,很难知道,因此以下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”。