2016-04-15 3 views
2

は、「イベント」オブジェクトが引数として渡されます。event.preventDefault()は、イベントをjQueryのコールバック関数の引数として渡すことなく動作するのはなぜですか?ほぼすべての例で

$('a').on('click', function(event) { 
    event.preventDefault(); 
} 

しかし、また、アンカーのデフォルトの動作を防止することで機能しているようです:

$('a').on('click', function() { 
    event.preventDefault(); 
} 

ことができる人なぜ第二のものがまだ機能しているのか、何が欠点であるのかを詳しく説明してください。

+0

Firefoxで試してみると、失敗します。 :P – RRK

+0

引数を指定しなくても、2番目がすべての場所で動作することを確認することはできません。 – RRK

+0

おそらくいくつかのブラウザはあなたの間違いを修正しています...? –

答えて

1

event.preventDefault()はとにかく動作します。あなたはデフォルトを呼び出している引数なしでイベントを呼び出すと

$('#my_button').on('click', function() { 
 
    console.log(event); 
 
    
 
    // 1. Press F12 or Ctrl + Shift + I and check the console 
 
    // 2. Click the button after run it 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="button" id="my_button" value="my_button" />

:暗黙的にeventを使用すると、イベント引数なしconsole.log(event)を送信する場合、あなたが見て、ことを確認します、DOMのMouseEventを表し、オブジェクト表現の別名。あなたは "e"や "evt"のような別名を渡すことでそれを取ることができますが、あなたはそれを "イベント"と呼んだときに同じことをした後に呼び出すことができます。

私の考えでは、それはちょうど "使用のモード"なので不都合はありません。

+0

あなたが呼び出しているイベントは、あなたのコールバックと同じで相対的なものであると確信しています。間違ったことをする機会はありません。 – RPichioli

+0

私はコメントの中でいくつかの人のアドバイスに従いましたが、 "イベント"を引数として渡さないとFirefoxではうまくいかないようです。私はベストプラクティスは常に引数を使用することですね – Kylie

+0

確かに、それはパターンではありませんが、ドキュメントは常に動作するように従ってください。 – RPichioli

関連する問題