jQuery 1.7+ を使用しているため、非推奨.live()
を置き換えます。.on()
$('#parent > img').on('click', function(e) {
フィドル
または、イベント委任が必要な場合 (たとえば、コンテンツを に動的に追加する場合#parent
):
//run this line when #parent is in the DOM
$('#parent').on('click', '> img', function(e) {
フィドル
.live
イベントをドキュメントまでバブルしてから、指定されたセレクターがターゲット要素と一致するかどうかを確認します。それ以降は、イベントの伝播を停止できなくなります。ドキュメントから:
イベント ハンドラーでの呼び出しevent.stopPropagation()
は、ドキュメントの下部にアタッチされたイベント ハンドラーを停止するのに効果的ではありません。イベントはすでに に伝播されていdocument
ます。
また、「親が優先される」という質問に答えるには、そうではありません。を呼び出すと.live
、実際にはハンドラが にアタッチされますdocument
。
この場合、.click(function(){})
(jQuery 1.7+ では の短縮形である) を介して.on('click'[, null], function(){})
アタッチされたハンドラーは、 にアタッチされたハンドラーの前に実行document
されます。これは、予想されるイベント伝播バブリング動作です。