2011-10-20 47 views
2

有誰知道HTML/JavaScript/jQuery上下文菜單實現支持回調,它允許我通過AJAX加載頂級和子菜單項?通過AJAX加載子菜單項的HTML/javascript上下文菜單

我需要支持非常動態的上下文菜單,其中可用的菜單項由權限,數據訪問權限和數據字典關係確定。我無法預先創建菜單項,因爲菜單結構的項目和深度是在運行時確定的。

我特別想知道爲jQuery 1.9開發的新iPod style menu是否支持動態AJAX加載,因爲這種風格的菜單對我們的需求來說是完美的。

謝謝。 Glenn。

+0

我已經找到[mbMenu](http://pupunzi.open-lab.com/2009/01/18/mbmenu/),它很古老,但支持通過AJAX加載子菜單內容。但是,它不支持我們需要的ipod風格,我們必須修復它,以免它與我們的元素ID衝突。 – Glenn

回答

1

試試這個:

http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/

可以很容易地實現和維護。

編輯:

您可以通過給UL的ID動態訪問您的菜單:

<ul id="contextmenuid"> 
    /*Empty menu to be created dynamically*/ 
</ul> 

,然後使用JavaScript你可以訪問此UL和創建/修改所需李:

var contextMenu = document.getElementById(contextmenuid); 

//This part would be dynamic loop to add menu items 
var contextMenuItem = document.createElement('li'); 
var contextMenuItemLink = document.createElement('a'); 

contextMenuItem.setAttribute('class', 'imageclass');  //imageclass will be used to show the menu item image 
contextMenuItemLink.setAttribute('href', '#doaction');  //#doaction is the item ID, it would be number 
contextMenuItemLink.setAttribute('title', 'Tooltip Info'); //Tooltip 
contextMenuItemLink.innerHTML = 'Dynamic Item, click me...';//Menu item text 
contextMenuItem.appendChild(contextMenuItemLink); 

//Add the new menu item to the context menu 
contextMenu.appendChild(contextMenuItem); 

同一將用於所述子菜單:

<ul id="contextmenuid"> 
    <li><a href="http://msn.com">MSN</a> 
     <ul id="contextsubmenuid"> 
      /*to be created dynamically*/ 
     </ul> 
    </li> 
</ul> 

關於風格,我想你可以用CSS來玩你需要的東西。

希望這會有所幫助。

+0

您提到的插件既不支持AJAX加載子菜單內容也不支持Ipod樣式菜單。 – Glenn

+0

我編輯了我的答案。 – Shadi

+0

感謝您的更新Shadi。但我仍然認爲它不符合我的需要。當用戶選擇它時,我需要動態地加載子菜單,這就是爲什麼我要求一個具有子菜單選擇回調的解決方案的原因(儘管我的問題可能沒有那麼清楚)。我上面提到的mbMenu庫正在爲我們工作。 – Glenn