奇怪的错误:每次点击代码都会执行多次

wierd error : code get executed more than once per click

本文关键字:代码 执行 错误      更新时间:2023-09-26

我有一个喜欢的评论系统

当我单击"喜欢"链接时,有时它可以正常工作,但有时每次单击最多发送8-9个请求! 我在另一个适用于键控事件的 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);
         }
     })
 })

这段代码有什么问题吗?

尝试从事件处理程序返回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"。