2011-03-02 61 views
2

我有一個菜單顯示了懸停時的子菜單。我的問題是,當頁面加載時,如果鼠標懸停在任何菜單元素上,懸停事件將觸發。我想要發生的是,在初始頁面加載時,如果鼠標懸停在某個菜單元素上,懸停事件不會觸發;如果鼠標不在菜單元素上,則一旦用戶鼠標在菜單元素上方,正常的懸停事件就會觸發。jquery:如果鼠標懸停在元素上,則在初始頁面加載時移除懸停

預先感謝任何及所有的幫助, 乙

回答

0

防止從發射懸停元素的默認行爲。

$("menuElementSelector").hover(function(e){ 
e.PreventDefault(); 
}); 
+0

但我怎麼會這樣做只有當頁面加載,只有當鼠標是在該元素? – bflemi3 2011-03-02 16:22:09

1

@Mörre想法是好的,這裏有一個靈感的一個,使用jQuery:

$(document).ready(function() { 
    // sets a loaded class on your menu when DOM is loaded (you could also try the $(window).load event) 
    $('#menu').addClass('loaded'); 

    // add the hover event on the links of your menu only if the menu has the loaded class 
    $('#menu.loaded a').live('mouseover mouseout', function(event) { 
       if (event.type == 'mouseover') { 
        // do something on mouseover 
       } else { 
        // do something on mouseout 
       } 
      }); 
     }); 
+0

這是我原來的,我們遇到的問題是,如果鼠標不在頁面加載元素上,那麼當用戶第一次在該元素上方懸停時,懸停不會觸發。 我想要做的是基本上解除綁定,如果鼠標在頁面加載後結束元素。 – bflemi3 2011-03-02 16:23:19

+0

啊,對不起,我們需要使用live(),否則這個類會在稍後添加,$('#menu.loaded a')在我們定義懸停事件時不存在。我編輯了代碼。 – Capsule 2011-03-02 17:10:43

0

使用hoverIntent jquery plugin。您可以延遲活動的迴應。所以,當鼠標結束時,事件不會立即觸發。

+0

希望的結果不是延遲懸停事件,而是在頁面加載時如果鼠標初始位於菜單元素上時將其完全解除綁定。 – bflemi3 2011-03-02 16:29:52

+0

但我認爲這是一種不真實的方法,1.實現想要的和2.避免鼠標懸停錯誤 – 2011-03-05 00:52:14

相關問題