我有一个两级ul/li菜单,其中li可以触发不同的onclick-events.
当点击一个ul li ul项目时,似乎会触发父事件(ul li).
我可以轻松避免这种情况吗?
(我正在考虑使用计时器来捕获第二个事件,但认为它是一个丑陋的修复......)
问候,/ T.
我正在尝试使用event.target来查找已单击的确切元素.我正在使用jQuery Mobile,链接在navbars中.
当页面最初加载时,event.target执行它的工作并返回正确的'a'元素(那里有一个编程点击导致它).但是,当您单击链接时,event.target将返回"span"元素,而不是单击的"a"元素.
如果单击链接文本部分的周围区域,则event.target将返回正确的"span"元素.
我需要event.target来返回已被点击的确切'a'元素,无论您是否直接点击链接,只要用户点击链接的给定区域(包括'span'区域) .
你可以在这里看到它
如果我需要提供更多信息,请与我们联系.谢谢!
我有一个父div,高度= 100px,小于子div,高度= 200px.
当我在父div上附加jquery mouseenter时,即使我将指针悬停在child上,事件也会触发(将鼠标悬停在扩展父级高度的child部分上).
有谁能解释一下?
$(document).ready(function() {
$(".parent").mouseover(function(e) {
console.log(e.target);
});
$(".child").mouseover(function(e) {
console.log(e.target);
});
$(".grandchild").mouseover(function(e) {
console.log(e.target);
});
});Run Code Online (Sandbox Code Playgroud)
.parent {
background-color: green;
height: 50px;
}
.child {
background-color: red;
height: 100px;
}
.grandchild {
background-color: blue;
height: 200px;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
<div class="child">
<div class="grandchild">
Test
</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
- 更新 - 起初我不清楚究竟是什么问题.现在我想我明白了(我更新了代码).
假设我们有一个父div width=100px和height=100px.
然后我们有一个孩子div width=200px和height=200px(比父母更大的面积).
当我将鼠标悬停在子节点上(但尚未悬停在父节点上)时,浏览器会计算指针也在父节点上,尽管它没有.
因此,如果我在子项和父项上都有一个处理程序,它们将在我仅输入子div时触发.
谢谢.
停止JavaScript事件传播是否被认为是“好的做法”-它以任何方式提高性能吗?
我想知道在布局目的之外是否有其他好处,您可以在其中停止传播,以免意外触发多个事件。