Я пытаюсь заставить мой обратный вызов события 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>
на переднем крае?