あなたがそれを好きかどうかにかかわらず、これまでに存在するイベント
名前を指定しなくても、イベントは常に存在します。
$(".foo").on("click", function(){
alert( arguments[0].type );
});
これは、次のように言うのと同じです。
$(".foo").on("click", function(event){
alert( event.type );
});
イベントオブジェクトはすでにコールバックに渡されています(名前を指定するかどうかに関係なく)。必要に応じて、イベントオブジェクトを使用しないことを選択できます。たとえば、jQueryのonClickメソッドを調べた場合:
$(".foo").on("click", function(){
/* Do stuff */
});
それを利用する
コールバックで参照されているイベントオブジェクトがないことに注意してください。私はする必要はありません。ただし、目的を問わず、使用する場合は、次の名前を付ける必要があります。
$(".foo").on("click", function(myEvent){
myEvent.preventDefault();
myEvent.stopPropagation();
});
イベントの詳細へのアクセスを許可したので、イベントの結果として生じるデフォルトの動作を防ぐことができます。また、イベントがDOMを他の要素にバブリングするのを防ぐこともできます。
実例
要素のクリックイベントをリッスンしたいとします。
$("#bigSquare").on("click", function(event){
/* Do something */
});
要素自体またはその子のいずれかをクリックすると、要素でクリックイベントが発生します。ここで、この要素に2つの子があるとします。
<div id="bigSquare">
<div id="redSquare"></div>
<div id="blueSquare"></div>
</div>
これらのいずれかをクリックすると、大きな四角、赤い四角、または青い四角が大きな四角に「クリック」イベントを引き起こします。最初にクリックした要素にクリックイベントが発生した後(イベントはDOMをバブルアップします)。
イベント自体を介して、クリックイベントのターゲットである要素を特定できます。
$("#bigSquare").on("click", function(event){
alert( event.target.id );
});
ここで、イベントを発生させたターゲットのIDにアクセスする方法に注意してください。赤い四角をクリックすると、そのイベントが大きな四角に泡立つと、「redSquare」というアラートが表示されます。青い四角も同じです。それをクリックすると、イベントが大きな正方形にバブルアップし、「blueSquare」というアラートが表示されます。
次のデモを介してこれをオンラインでテストできます:http://jsbin.com/ejekim/edit#javascript,live
オレンジ、赤、または青の四角をクリックして、アラートの内容を確認してください。