私はこのJavaScriptのメソッド呼び出しに相当するjQueryを見つけようとしています。
document.addEventListener('click', select_element, true);
私は限ります:
$(document).click(select_element);
しかし、JavaScriptメソッドの最後のパラメータと同じ結果は得られません。イベントハンドラをキャプチャ段階とバブリング段階のどちらで実行するかを示すブール値です(私の理解によれば http://www.quirksmode.org/js/events_advanced.html ) - は省かれています。
JQueryを使用して、どのようにしてそのパラメーターを指定するか、または他の方法で同じ機能を実現するのですか?
JQuery 1.7以降、.on()
が.bind()
よりもイベントのバインド方法として好まれるようになりました。
から http://api.jquery.com/bind/ :
JQuery 1.7以降、.on()メソッドはイベントハンドラをドキュメントに添付するのに適したメソッドです。以前のバージョンでは、.bind()メソッドはイベントハンドラを要素に直接アタッチするために使用されていました。ハンドラはjQueryオブジェクト内で現在選択されている要素にアタッチされているので、それらの要素は.bind()の呼び出しが発生した時点で存在している必要があります。より柔軟なイベントバインディングについては、.on()または.delegate()のイベント委任に関する説明を参照してください。
ドキュメントページは http://api.jquery.com/on/ にあります。
最も近いものはbind関数です。
$('#foo').bind('click', function() {
alert('User clicked on "foo."');
});
注意すべき1つのことは、jQueryイベントメソッドは、load
タグ内の別のドキュメントとしてロードされるSVG DOMを含むembed
タグに対してembed
を起動/トラップしないことです。これらのイベントでload
イベントをトラップすることがわかった唯一の方法は、生のJavaScriptを使用することでした。
これはうまくいきません(on
/bind
/load
メソッドを試しました):
$img.on('load', function () {
console.log('FOO!');
});
しかし、これはうまくいきます:
$img[0].addEventListener('load', function () {
console.log('FOO!');
}, false);
イベントをバインドするために.on()
関数を使うべきです。
これが標準的なJavaScriptのためのこの号のMozilla Development Network(MDN)での優れた取扱いです(jQueryに頼ることを望まない、またはそれをよりよく理解したくない場合)。
https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener
上記の扱いにおけるリンクからのイベントフローについての議論は以下のとおりです。
http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
重要な点は次のとおりです。