光标是否在元素上(在页面加载时)?

时间:2011-04-12 18:26:11

标签: javascript jquery

我有一个.hover()动作分配给一个元素来隐藏/显示某些东西,具体取决于光标在它上面。我遇到的问题是,当页面加载并且光标超过元素时,它不会注册为因为它没有触发mouseenter事件而结束。

是否有另一种方法来判断光标是否在所需元素上?

5 个答案:

答案 0 :(得分:1)

在页面加载时使用鼠标位置可以调用

var currentElement = document.elementFromPoint(x, y);

然后,如果在该位置找到的元素是具有悬停事件的元素。您可以手动触发该悬停事件

$(currentElement).trigger('hover');

答案 1 :(得分:1)

如果您在页面完成加载之前隐藏元素,然后立即显示它们,那么您的鼠标悬停事件现在会被触发吗?

<div id='allmyelementsinhere' style='display:none'>

然后使用javascript删除显示:页面加载时无。

我想你的鼠标事件会在你显示元素后立即激活。

答案 2 :(得分:1)

我在下一个和上一个导航按钮中也存在此问题,这些按钮可在一致设计的页面之间导航。

用户将单击下一步转到下一页,并且由于他们的鼠标位于第二页的页面加载中的相同位置,因此他们可以再次单击下一步以继续浏览页面集合。基本上是一个方便的下一个/上一个UI。

当然除了第二页和后续页面的页面加载中没有显示悬停状态。

所以我添加了一个url参数(action ='next或action = prev),然后在加载时,如果存在相关的url参数,我将下一个或上一个按钮置于悬停状态。如果用户以某种方式移动了他们的鼠标并且没有超过按钮,那么在第一次mousemove事件之前,你的鼠标悬停状态就会出现错误。

它并不完美,它只适合用户在您网站的页面中使用一致用户界面的特定情况,但由于这种用户界面相当普遍 - 特别是在博客/画廊中,我提到它

答案 3 :(得分:0)

这是从页面加载开始跟踪鼠标位置的jquery方法。

(function($) {
  $.mousePos = {x: 0, y: 0};
  var recordPos = function(e) {
    $.mousePos.x = e.pageX;
    $.mousePos.y = e.pageY;
  };
  $(document).mousemove(recordPos).mouseover(recordPos);
})(jQuery);

一旦鼠标开始与页面进行交互,这将填充 $。mousePos.x $。mousePos.y

答案 4 :(得分:-2)