2011-04-12 135 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作爲鼠標開始互動與頁面。

相關問題