0

私はいいねコメントシステムを持っています

いいねリンクをクリックすると、正常に動作することもありますが、クリックごとに最大 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);
         }
     })
 })

このコードに何か問題がありますか?

4

2 に答える 2

2

trueイベント ハンドラーから戻って、イベントを処理したことを示してみてください。そうすれば誰も拾わない…

それでもうまくいかない場合は、同じイベントに対して複数のイベント リスナーを登録している可能性があります。お気に入りのデバッガーを使用して JavaScript の実行を一時停止し、コンソールを使用して、関連する dom 要素のすべてのイベント リスナーを調べます。

于 2012-05-21T20:29:18.873 に答える
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
});

また、ライブは現在非推奨であり、代わりに「on」に置き換えられています。

于 2012-05-21T20:38:29.317 に答える