jQueryイベントコールバックを正しくトリガーしようとしていますが、ページ上で別の要素がカバーされているため、興味のある要素がイベントを受信しないという事実を回避できないようです。次のように要約できます (要素のスタイルを設定して、jsfiddle に表示されるようにしました)。
<div id='mydiv'>
<div style="border: 1px solid; border-color: red; position: absolute; left: 0px; top: 0px; width: 200px; height: 200px; z-index: 100">Hello</div>
<canvas style="border: 1px solid; border-color: yellow; position: absolute; left: 50px; top: 50px; width: 150px; height: 150px"></canvas>
</div>
上記のセグメントで、 でマウス クリックをリッスンしようとすると<canvas>
、イベントが呼び出されません。
$('#mydiv').on('mousedown', 'canvas', this, function(ev) {
console.log(ev.target);
});
ただし、代わりに要素をリッスンするようにイベント ハンドラーを変更すると、<div>
期待どおりにコールバックがトリガーされます。
$('#mydiv').on('mousedown', 'div', this, function(ev) {
console.log(ev.target);
});
問題のあるブロックを最前線に置いた<canvas>
まま、イベントを受信するように強制するにはどうすればよいですか?<div>