0

演示:http: //jsbin.com/afixay/3/edit

1) 将光标放在红色框上

2)不要移动光标,只需按 ctrl+r (页面应该重新加载)

3)你不会得到任何警报。

好吧,一旦您将其悬停/悬停回来,您就会收到警报。问题是,当光标放在页面加载时的红色框上时,hover不会触发事件(也没有mouseenter)。

我该如何解决?

我知道,浏览器的工作似乎是正确的,但我真的需要知道元素是否悬停,即使在页面加载时也是如此。

$(function() {
  function hovered(e){
      e.type == 'mouseenter' ? alert('on') : alert('off'); 
  }

  $('.box').hover(hovered);
});
4

1 回答 1

-1

您将无法做到这一点,无论如何都不能使用纯 JS。

  1. 在触发事件之前,您无法在初始页面加载时手动获取鼠标位置。X 和 Y 位置为 0。因此无法判断鼠标是否已经在您的元素上方。

  2. No mouse events are fired until it moves. You could listen for mousemove to immediately respond, but that still doesn't give you what you want.

The CSS trick that was pointed out in the comments is the closest you'll get, but it's hardly a solid solution.

于 2013-03-30T16:54:18.680 回答