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されます。これは、予想されるイベント伝播バブリング動作です。