我试图让我的 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>
块留在最前面?