jQuery的hover只能在点击事件上工作吗?

15

我有这段运行在jQuery 1.10.1上的小代码,我想要做的基本上是在悬停在类名为dash_item的li元素上时,在控制台记录悬停事件,但它只在我点击该项时起作用,而不是在悬停上。

CODE:

$(document).ready(function(){
    $('.dash_item').on({

       mouseenter: function(){
        console.log("im here");
      },

      mouseleave: function(){
        console.log("im out");
      }
    });
});

这里是jsfiddle: http://jsfiddle.net/JQAw3/


2
它在我这里使用 Chrome 的 hover 功能可以正常工作,你用的是什么浏览器? - Samuel R
我也在使用Chrome,但是我刚刚尝试了一下Mozilla,它可以工作,这非常奇怪。 - unknown
它在我的Firefox上运行良好。 - ODelibalta
你的电脑里有小精灵,这是唯一的解释。 - adeneo
5个回答

43

似乎是Google Chrome的一个bug,当您长时间打开一个网站,包括Dev工具时会发生。

我也遇到了同样的问题,尝试了我所能想到的一切。

最终,简单地重启浏览器就解决了问题。

也许只需在另一个标签页中打开该网站即可解决问题。

编辑2015-06-15:每次我在Chrome上使用mouseentermouseleave时都会遇到此问题。 对我而言,只需关闭标签页并在另一个标签页中打开该网站即可。


1
似乎在另一个选项卡中打开并不足够,我必须关闭浏览器。谢谢! - Rob Osborne
6
确认重新启动成功。虽然我浪费了一个小时,但你可能帮我节省了一整天! - Nelson Rothermel
很遗憾地报告,截至本帖发布时,这仍然是一个问题。谢谢,你节省了我大量的时间! - lazd
一年后,我刚刚在Ubuntu上使用Chromium时,发现了同样的错误!由于出现在某些代码更改后就停止工作,我花费了几个小时来解决这个问题,并且以为问题源于我的代码!!!我关闭了标签页并在新标签页中再次打开页面,然后我的代码又起作用了。我几乎从不重启Chromium,所以我欠你很多调试时间! - Shautieh
我注意到只有在Chrome响应式视图处于活动状态时才会发生这种情况。 Command + Shift + M将停用它,然后悬停功能就会再次正常工作。 - Sam R.
显示剩余2条评论

1

不,它不行 - hover和mouseenter存在相同的问题

我已经打开了开发者工具一段时间

在Firefox中打开页面,它可以工作


0

1
与 CWitty 的答案一样, hover 只是 mouseenter 和 mouseleave 的速记方式。 - j08691
是的,我同意,但这样代码量会少一些。因为他想在这里处理两种情况。 - AntouanK

0

如果有其他人偶然遇到这个问题,我在这里留下了解决方法。在2015年初,chrome/chromium仍然存在一个“特性”,即如果页面被视为文件(而不是从Web服务器提供服务),则鼠标位置事件如mouseentermouseleavemouseover等不会触发。不知道这是否是OP的问题,但当我偶然遇到这个问题时,它就是我的问题。


0
你可以尝试使用jQuery的hover()函数。它需要一个handlerIn和handlerOut参数。

2
.hover() 方法绑定了 mouseenter 和 mouseleave 事件的处理程序。您可以使用它来在鼠标在元素内部的时间内简单地应用行为。换句话说,没有区别。 - j08691
我知道,但在我看来这是一个更容易添加的函数。 - CWitty
@CWitty 那应该是一条注释,而不是一个答案 :) - Karl-André Gagnon
抱歉,我是 Stack Overflow 的新手。 - CWitty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接