2012-06-29 44 views
3

我從Javascript工具箱實現了jQuery ContextMenu插件,它的工作原理非常漂亮。當我在某些指定區域右鍵單擊時,它會打開我想要的上下文菜單,所以它在除了一件事情之外的所有內容中都能正常工作:如何在隨後的右鍵單擊關閉jQuery的上下文菜單

當我在另一個菜單仍處於打開狀態時右鍵單擊以打開上下文菜單時,不關閉原始上下文菜單。只要我點擊我的表格的另一行,就會打開一個新的上下文菜單,而不會關閉其他的菜單。

但是,當我左鍵單擊時它們全部關閉。

一些幫助,或者甚至推動正確的方向將不勝感激。

在此先感謝!

插件地址:http://www.javascripttoolbox.com/lib/contextmenu/

編輯:這是用來調用右鍵菜單

$("#sku_table tbody").mousedown(function(event) { 
    if (event.which === 3) { 

     var sku = $(event.target).closest('tr').attr('id'); 
     sku = sku.replace('.', '\\.'); 
     var menu1 = [ 
      { 
      'Open Item information': { 
       onclick: function(menuItem, menu) { 
        //Function to open item info 
       } 
      }} 
     ]; 
     $(function() { 
      $('#' + sku).contextMenu(menu1, { 
       theme: 'vista' 
      }); 
     }); 

    } 
});​ 

實際上是打開什麼菜單$().contextMenu()的代碼。

+0

我可以看到你的代碼請調用上下文菜單? – BumbleB2na

+0

這是它!如果你需要其他東西,讓我知道! – npiani

回答

2

看起來,每當您在表體內進行右鍵單擊時,都會創建一個新的上下文菜單實例。相反,如果您爲上下文菜單的顯示內容定義選擇器,菜單將僅顯示在那裏。

如果上下文菜單顯示在隨機項上,那麼這些項應該用一個類定義,並且可以從該類中實例化上下文菜單。

http://jsfiddle.net/azSMq/

$(function() { 
    var menu1 = [ 
     { 
     'Open Item information': { 
      onclick: function(menuItem, menu) { 
       $(this).fadeOut(); 
       //Function to open item info 
      } 
     }} 
    ]; 
    $("#sku_table tr").contextMenu(menu1, { 
     theme: 'vista' 
    }); 
});​ 
+0

謝謝先生。這很有道理。謝謝! – npiani

0

有趣的是,演示頁面似乎在Firefox中按照需要工作,但不在Chrome或IE中。處理這種情況的一種方法是在顯示剛右鍵單擊的菜單之前隱藏所有打開的菜單。所以,你可以添加以下代碼:

$(".context-menu").hide(); 

此行

if(event.which === 3){ 

這應該給你想要的效果後添加。

+0

工程,但只隱藏(沒有雙關語意圖)的問題,並不一定解決它。不過謝謝你,我沒有想到這一點。 – npiani

+0

$(「。context-menu」)。remove(); –

2

試試這個代碼:

$("#sku_table tr").contextMenu(menu1, { theme: 'vista', 
    beforeShow: function() { 
     $(document).click(); 
     return true; 
    } 
}); 

強制文件點擊就會將自動隱藏其他上下文菜單插件中調用內部代碼

相關問題