4

私の preventDefault コードが機能しない理由を知っている人はいますか? return false は正常に返されますが、実際には「適切な」方法ではないというのが私の理解ですか?

 if ($('.signup').length == 0) {
        $('.star').on('click',function(e){
            e.preventDefault();
            var starElement = $(this);
            var resourceId = starElement.parents('li').data('id');

            updateFavoritesSpan( starElement, starElement.hasClass('starred') );

            starElement.toggleClass('starred');
            starElement.parents('li').toggleClass('fvtd');
        });
        // voting
        $('.voting').on('click .up', function(e){
            e.preventDefault();
            sendVote($(this), 1);
        });

        $('.voting').on('click', '.down', function(e){
            e.preventDefault();
            sendVote($(this), -1);
        });
    }
4

4 に答える 4

7

return false;と の両方preventDefaultを行いstopPropagationます。

preventDefault要素の「デフォルト」アクションをstopPropagation停止し、イベントが親要素にバブリングするのを停止します。

私の推測では、あなたがpreventDefault.

于 2012-07-06T19:57:11.493 に答える
3

return falseと同じではありませんpreventDefault()

実際return falseには、次の組み合わせまたは省略形です。

  • preventDefault()
  • stopPropagation()

したがって、これも追加してみてください(とともにe.preventDefault()):

e.stopPropagation();
于 2012-07-06T19:57:50.923 に答える
2

タイプミスがあります。これを変更します。

$('.voting').on('click .up', function(e){

に:

$('.voting').on('click', '.up', function(e){
于 2012-07-06T19:58:40.843 に答える
0

完全を期すために:

false を返す
も誘発する
stopImmediatePropagation()
これは、同じ要素の後続のすべてのハンドラーをキャンセルします (touchend イベントを操作し、後続のクリックをキャンセルする場合に役立つ場合があります) stopPropagation ()event.stopImmediatePropagation()

の違いをここで読んでください:

于 2013-06-06T15:56:17.913 に答える