2013-07-16 126 views
0

我想在我的頁面加載時在我的菜單項'#currentitem a'上觸發mouseenter。我與做:mouseenter在頁面加載時觸發,如果沒有其他mouseenter事件觸發

$(document).ready(function(){ 
    $("#currentitem a").trigger('mouseenter'); 
}); 

我的問題是,如果我的MouseEnter(手動)其他項目,觸發(與上面的代碼)項目不鼠標離開。菜單項重疊。

我是新手,如果可能的話我想達到以下目的?

  1. mouseenter '#currentitem a' on pageload。
  2. mouseleave '#currentitem a'當另一個項目有一個mouseenter觸發。
  3. 當該菜單項觸發mouseleave時,mouseenter '#currentitem a'因此當沒有其他東西時該項目總是被觸發。

菜單是一個更復雜的jQuery設置的一部分,而不僅僅是純CSS,所以這是我可以看到做到這一點的最佳方式。任何幫助將非常感激。

我現在已經創建了一個的jsfiddle顯示什麼,我試圖做的:

http://jsfiddle.net/qFS84/

+0

這發生在你的邏輯有缺陷時。當鼠標離開某個元素時,你會期待發生某些事情,但鼠標永遠不會離開該元素是可能的,而且您應該可以像關閉所有其他菜單等一樣。當鼠標進入一個新的菜單項時,或者至少檢查是否所有的東西在進入另一個菜單項時都按照預期關閉,而不僅僅是在離開時。 – adeneo

回答

0

下面是一些嘗試,應該工作

$(function(){ 
    $('#currentitem a').trigger('mouseenter'); 
    $('.currentitem a').on('mouseenter', function(e) { 
     if ($('.currentitem a:focus').length > 0) { 
      $('.currentitem a:focus').blur(); 
     } 
    }); 
}); 

如果這不起作用,請讓我知道,我會馴服它。

編輯:

尋找你的編輯之後,我可能已經找到了你的問題

當你的目標與jQuery元素,id屬性應僅使用一次DOM中的使用。假設這對你的html來說是真的,接下來我猜想的是,你不會聽聽鼠標何時進入不同的項目(例如你的列表中的下一個li)。如果這是真的,你只需要聽取其他鋰元素上的mouseenter事件。

最後,如果您正在傾聽事件,但他們不工作,他們可能會爲您工作的另一個事件。本次活動是mouseover

中秋節編輯更新:

如果你談論的是沒有擊中還有什麼別的菜單沒有隱瞞,當你的鼠標直接在「我們的項目」,這是因爲鼠標從來沒有「進入了」元素,所以它不會隱藏自身,解決這個問題的方法很簡單:

$("#mydroplinemenu > ul > li[id!='currentitem'] > a").one('mouseenter', function(e) { 
    $('#currentitem a').trigger('mouseleave'); 
}); 

那選擇我的活動只針對未#currentitem,只會爲每個鏈接觸發一次鏈接元素。這可能只是你正在尋找的東西!我在你的jsfiddle上測試過它,確實有效。

+0

非常感謝您的幫助..但不幸的是,它的行爲仍然如此。我是jquery的新手,所以無法挑選它。任何調整將不勝感激。 – xsample

+0

抱歉混淆元素是一個id = currentitem – xsample

+0

我現在創建了一個JSFiddle來顯示即時消息試圖做什麼:http://jsfiddle.net/qFS84/ – xsample

相關問題