【发布时间】:2012-02-26 15:23:46
【问题描述】:
我正在尝试让我的 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> 块留在最前面?
【问题讨论】:
标签: javascript jquery z-order