2013-06-30 122 views
3

我正在玩jquery-ui菜單小部件,我試圖獲得一些似乎應該顯而易見的功能......但我可能會忽略它,或者他們在寫作時可能會這樣做。jQuery-ui菜單子菜單在鼠標移出時不折疊

我能夠輕鬆地獲得水平菜單,並使子菜單垂直下降......但是,對於我的生活,當我彈出菜單時我無法獲取子菜單。它只是呆在那裏,直到我點擊別的東西。真的很煩人。作爲一名設計師,它違背了我所有的敏感性,我看不出它只是掛在那裏的理由。

我打破了這個事情,還是我需要添加一些特別的東西? 作爲一個方面說明,我已經擺弄了幾個小時的Jquery-ui js,編輯菜單部件。我修修補補在這裏:

// DEFAULT FUNCTION: 
    // Clicks outside of a menu collapse any open menus 
    this._on(this.document, { 
     click: function(event) { 
      if (!$(event.target).closest(".ui-menu").length) { 
       this.collapseAll(event); 
      } 

      // Reset the mouseHandled flag 
      this.mouseHandled = false; 
     }, 
     // I ADDED THIS: 
     mouseout: function(event) { 
      this.collapseAll(event); 
     } 
    }); 

它生產我會爲行爲...之類的... 現在我有參差不齊的鼠標輸入檢測附帶子菜單我的菜單項。把一個實況網站放在菜單隻在某些時間工作的地方並不是很好。有任何想法嗎?我是以這種艱難的方式還是錯誤的方式來做這件事,還是有些我根本不知道的事情?事實上,我並不是jQuery最偉大的人物。

我使用的設置基本上是菜單小部件的jQuery UI演示頁面上示例的增強版本,所以我不認爲這是我的html導致的問題。

回答

1

我只是有同樣的問題,並找到解決方案here。我希望它能與你合作。

+0

我使用單個文件jquery-ui.js而不是所有的小部件作爲單獨的文件。我無法找到更改代碼的地方......或者即使我可以(即在更新之前適用)。 我錯過了什麼嗎? –

1

好吧,這只是一些搜索。

我在之前的回答中使用了jplfl的示例作爲指導,並進入了jquery-ui.js文件,尋找與菜單相關的任何函數。我找到了#9715行,其中mouseleave被綁定到「collapseAll」,而不是調用實際摺疊菜單的函數。我改成這樣:

mouseleave: function(event){ 
     this.collapseAll(event, true); 
    }, 

現在它的工作。

所以,是的。 jplfl的答案肯定有幫助,但我認爲這可能是相關的,因爲它會更詳細一些。

0

亞倫: 只要搜索 'ui.menu' 和向下滾動,直到你看到 鼠標離開: 「collapseAll」 行,對我來說是11507(jQuery的UI-1.10.3)

0

我米不知道這是否會工作:

$(document).ready(function() { 
$(「#menu」).menu({ 
mouseleave: function(event){ this.collapseAll(event, true); } 
}); 

但我敢肯定還有另一種選擇。 您可能會檢查這link