为什么鼠标向上事件没有为子元素触发
Why mouseup event didn't fire for child element?
给定带有一些div的DOM:
<div id="main">
<div id="graph">
</div>
<div id="devices">
<div class="device">
Display
</div>
<div class="device">
Server
</div>
<div class="device">
Player
</div>
</div>
</div>
<br/>
<div id="indicator1" class="indicator">
indicator1
</div>
<div id="indicator2" class="indicator" style="background : aqua;">
indicator2
</div>
具有类"device"的div 具有以下"鼠标向下"处理程序:
function itemChoose(evt) {
item = this;
inPageX = evt.pageX;
inPageY = evt.pageY;
$(item).css('position', 'relative');
$('#main').on('mousemove', drag);
$('#graph').on('mousemove', show2);
$('#main').on('mouseup', clear1);
$('#graph').on('mouseup', clear2);
}
此处理程序应该允许通过鼠标移动"设备"元素。移动过程正常,但"鼠标向上"事件仅针对"#main"div 触发,该div 是"#graph"div 的父级。问题是:为什么"鼠标向上"事件没有为"#graph"div 触发?
示例草图在这里:https://jsfiddle.net/beem/w49L14t3/1/。
在这里,当"#main"或"#graph"div触发"鼠标向上"事件时,底部的 2 个"指示器"div 分别显示文本"已清除"。在 Chromium 47.0.2526.73 和 Firefox 43 上测试。
似乎
"mouseup"事件在可拖动的".device"div 中触发,然后在它的父"#devices"div 中触发,然后在它的父"#main"div 中触发。这可以从我的下一个版本的片段中看到:https://jsfiddle.net/beem/w49L14t3/4 .
$('#main').on('mouseup', clear1);
$('#graph').on('mouseup', clear2);
$('#devices').on('mouseup', clear3);
因此,"#graph"div 远离事件路径。
相关文章:
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 将鼠标悬停在同级元素上的 jquery 上轻拂
- 将鼠标悬停在Angular JS中的一个元素上,并将Class添加到另一个元素中
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- 只要用户将鼠标悬停在jQuery中的某个元素上,就可以执行多次单击
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 如果鼠标在元素上快速移动和关闭,则防止.hoop事件被垃圾邮件发送
- 为什么不是't html<对象>元素响应鼠标事件
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 如果鼠标离开父对象,则隐藏元素
- 当鼠标悬停在iframe上时,如何在iframe之外的元素上触发类
- 如何在鼠标悬停时显示带有拉斐尔元素(圆、线)的上下文菜单
- 当鼠标也在触摸另一个元素时,d3.js鼠标悬停事件未被触发
- 从鼠标点(及更多)查询位置元素
- 如何添加效果,以便将鼠标悬停在 SVG 元素上使其变大
- 可缩放容器鼠标上的可拖动元素在创建时从辅助对象上浮动
- 绘制DOM元素:鼠标事件会被背景元素混淆
- Fetch元素鼠标当前指向的Chrome开发工具已启用
- 如何使元素鼠标不可点击,但可以通过javascript单击
- 获取元素鼠标在iframe中的HTML