2011-04-12 115 views
1

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

是否有另一种方法来判断游标是否位于所需的元素上?

+0

的问题是有没有办法,我知道的(或谷歌似乎知道的)来获取,而无需用户移动鼠标鼠标的坐标。这可能是您需要忍受或变通的限制。 – Dutchie432 2011-04-12 18:54:21

+0

我想我会来这里寻求帮助。 – 2011-04-12 18:55:58

+0

当我说你需要解决它,我不是说你需要实现一个变通办法(从我所看到的没有一个很好的一个)。我的意思是说,就设计和交互而言,你必须解决它。 – Dutchie432 2011-04-12 19:03:12

回答

1

使用在页面加载鼠标的位置,你可以打电话

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

那么如果在该位置找到的元素是一个与悬停事件。如果隐藏元素(一个或多个),直到页面加载完成,然后告诉他们所有的一次,将你的鼠标悬停事件现在开除你可以触发悬停事件手动

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

这个问题是 - 如何在页面加载时获得鼠标位置,而不用移动鼠标?我在网上看到的每个例子都显示使用'mousemove'处理程序。 – Dutchie432 2011-04-12 18:38:13

+0

我不相信你可以......你可以检查onload事件,看看它是否实际上提供了鼠标x和y坐标,但我相信它不会。在此之前,您必须等待鼠标轻微移动。 – 2011-04-12 18:39:59

+0

onload不提供此类事件数据。 – Dutchie432 2011-04-12 18:52:16

-2
+0

这是同样的问题。加载该页面并且不要移动鼠标。值保持为零(至少对我而言)。关键是行'document.onmousemove = getMouseXY;' – Dutchie432 2011-04-12 18:53:02

+1

加载时究竟是如何?保持你的鼠标到位,方块显示0和0. – Zirak 2011-04-12 18:53:58

+0

我测试了Chrome和IE8,并且两者都没有移动我的鼠标它工作。 – ChrisThompson 2011-04-12 18:58:31

0

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

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

我在想你的mouseevent会在你显示元素后立即触发。

1

我也遇到了这个问题,可以在设计一致的页面之间浏览的下一个和上一个导航按钮。

用户将点击下一页转到下一页,并且由于他们的鼠标在第二页的页面加载位置相同,他们能够再次单击下一页以继续浏览页面集合。本质上是一个方便的下一个/上一个用户界

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

所以我添加的URL参数(动作='下一个或行动= PREV),然后在负载我把下一个或前一个按钮进入悬停状态,如果相关的URL参数存在。如果用户以某种方式移动了他们的鼠标并且没有在按钮上方,那么你在它的悬停状态中确实得到了一个不正确的按钮,直到第一个鼠标移动事件。

这并不完美,它只适合这种情况,即用户在网站的页面中使用一致的用户界面,但这种用户界面是相当普遍的 - 尤其是在博客/画廊中,尽管我会提到它。

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作为鼠标开始互动与页面。

相关问题