0

私はpreventDefault()に混乱します。

私は私のテストとして次のものを動作させました

$('.next').click(function(e){
        if(e.preventDefault){
            console.log("asdfnext");
            e.preventDefault();
        }else{
            console.log("next");
            return false;   
        }       
    });

これは作業ファイルの一部です。

<a class='next' href='http://www.bbc.co.uk'>Next</a>
<a class='previous' href='http://www.facebook.com'>previous</a>

上記によると、私は私のリンクがbbcまたはfacebookに行くのを止めることができます。ここで確認できますhttp://jsfiddle.net/puQ7H/

しかし、次のようにこれを実装しようとすると失敗し、理由を知りたいです

$('#step0Next').click(function(e){
            if($(this).is('.disabled')){
                console.log("disabled");                    
                    if(e.preventDefault){
                        console.log("asdfnext");
                        e.preventDefault();
                        return false;   
                    }else{
                        console.log("next");
                        return false;   
                    }   

            }else{
                console.log("not disabled");    
            }

        });

基本的に==>step0Nextは私のリンクIDです

そして私のcssは次のとおりです:

a.disabled { opacity:0.2; cursor: default; }

私の考えは、リンクが('.disable')状態の場合は、次のステップに進むのをやめることです。

実際にリンクは次のステップに進み、私はここで停止しています。:P

4

3 に答える 3

2

if ブロックで存在するかどうかを確認.preventDefaultしていますが、なぜですか? これを試して:

$('#step0Next').click(function(e){
    if($(this).hasClass('disabled')){
        console.log("disabled");                    
        e.preventDefault();   
    } else {
        console.log("not disabled");    
    }
});

セレクターエンジンを介して実行されないため、実際に.hasClass()は少し高速です。

于 2012-11-13T15:56:58.713 に答える
1

あなたは必要ありreturn false;ませんし、チェックが関連しているとは本当に思いません。代わりにこれを使用してみてください:

$('#step0Next').click(function(e){
       if($(this).is('.disabled')){
            console.log("asdfnext");
            e.preventDefault();
       }else{
           console.log("not disabled");    
       }
});​
于 2012-11-13T15:07:34.083 に答える
1

event.isDefaultPrevented()を使用してみてください

if(e.isDefaultPrevented()){

}

説明: このイベント オブジェクトで event.preventDefault() が呼び出されたかどうかを返します。

于 2012-11-13T15:02:53.787 に答える