Javascript mouseenter事件激发了两次
Javascript mouseenter event fired twice
CCD_ 1,当console.log事件时,在这两种情况下,event.type
都是"mouseover"
这正常吗?我认为对于mouseenter
,您可以看到event.type
"mouseenter"
我的问题是,当鼠标悬停在元素上时,javascript鼠标输入事件触发了两次。
我可以看到,在两个激发的事件中,event.fromElement是不同的。
如何停止冒泡?event.stopProppagation
,不工作
<span class="foo-wrapper">
<i class="icon-circle"></i>
</span>
$(".foo-wrapper .icon-circle").on("mouseenter", function(e){
e.stopPropagation();
cur_target = $(e.target);
$("#tooltip").css({'top': parseInt(cur_target.offset().top-116), 'left': parseInt(cur_target.offset().left-141)}).fadeIn(150);
}
当鼠标进入.icon圆圈时,它会触发两次。
mouseenter不是本机dom事件。它的包装鼠标套。让我解释一下:假设你有一个元素P,它是100x100,它有一个子元素C,它是50x50。
当您第一次将鼠标悬停在p上时,您将同时获得mouseover和mouseenter。当您现在将鼠标悬停在C上时,浏览器会为P触发mouseout,为C触发mouseover。但是C在P里面,所以你还没有"离开"P——这就是为什么产生了mouseenter和mouseleave。
实现事件的库检查over-and-out事件的目标,以确定是开火进入还是离开。
因此,如果它发射两次,可能来自不同的元素。您需要将处理程序添加到正确的元素中,而不是同时添加到这两个元素中。
您还可以从事件处理程序中调用event.prventDefault((和/或返回false。
在jQuery v2.1.0中,它似乎可以正常工作。下面是您的代码示例http://jqversion.com/#/jad2sKb。似乎mouseenter
事件只触发一次,而event.type
是.on("mouseenter") and .on("mouseleave")
0
如果有什么不同,请更新演示。
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- AngularJs正在阻止链接被点击两次
- 为什么我的路线处理程序会触发两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- 在列表中至少使用两次随机生成的nr
- 检查某个键是否按下两次
- 一次点击,两次'单击'事件已启动
- 为什么事件mouseenter在JavaScript中触发两次
- Javascript mouseenter事件激发了两次