2

これは私のコードです:

$('#Login').keydown(function(e){         
        if(e.which  == 32){     
            alert("enter");
            this.preventDefault();            
        }        
    });

このコードは機能しませんが、アラートを送信します

$('#Pwd,#Pwd2').on('keydown',function(e){
        if(e.which == 32){
            e.preventDefault();
        }
    });

そして、このコードは機能します。私はなぜなのか理解していない。

4

2 に答える 2

6

のデフォルト アクションを防止したいと考えていますEvent(イベント関数のパラメーターとして渡され、それを呼び出していますe)。

thisイベントのターゲットである要素 (つまり、この場合は要素e.targetになります#Login) であり、イベント自体ではありません。これには . はありませんpreventDefault()

Eventこれにもオブジェクトを使用するだけです:

$('#Login').keydown(function(e){         
    if(e.which == 32){     
        e.preventDefault();            
    }        
});

上記では、スペースバーを押すたびにイベントがキャンセルされることがわかります#Login: http://jsfiddle.net/xWmUU/

于 2013-07-18T15:47:23.150 に答える
1

preventDefaultは Event オブジェクトのメソッドであるため、イベントで呼び出されたときに機能することは理にかなっています。

thisこの場合は参照さ#Loginれますが、これは DOM オブジェクトであり、メソッドはありませんpreventDefault

イベント伝播のしくみにより、this常に と等しくなるとは限らないことに注意してくださいe.target

于 2013-07-18T16:41:04.303 に答える