事件超出边际
Event over a margin
本文关键字:事件 更新时间:2023-09-26
Having:
<div id="outerDiv">
<div id="innerDiv" style="margin: 10px">Content goes here</div>
</div>
我想识别那些发生在innerDiv外部但在outerDiv内部的鼠标事件(换一种方式说,这些事件在innerDiv边距上)。
这很容易实现,如果我添加外div填充或边界,但我想知道是否有另一种方法来做到这一点,而不必添加额外的像素到外div。
谢谢
使用jQuery,我将执行以下操作
$("#outerDiv").bind("event", function(e) {
if ($(e.target).closest("#innerDiv")) {
alert("from inner div");
}
else {
alert("from outer div only");
}
});
解释:
#outerDiv
将得到一个冒泡事件。如果事件的目标或目标的祖先是#innerDiv
,那么我们知道它起源于内部div,否则不是。由于它击中了#outerDiv
,我们知道它发生在#outerDiv
的某个地方,而不是#innerDiv
这可以通过使用一个标志来实现:
<div id="outerDiv" style="border:thin solid red;">
<div id="innerDiv" style="border:thin solid blue; margin: 10px;">Content goes here</div>
</div>
<script language="javascript">
var flag = false;
document.getElementById("outerDiv").onclick = function(){
if (flag) {
flag = false;
return false;
}
alert("Clicked outerDiv");
}
document.getElementById("innerDiv").onclick = function(){
flag = true;
alert("Clicked innerDiv");
}
</script>
本质是innerDiv
的事件将首先触发。如果是,阻止outerDiv
的事件。
该技术适用于onmousedown
, onmouseup
和onmousemove
。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- ng更改事件不适用于Dropdown