2013-06-18 21 views
2

我上SVG畫布對象執行文本菜單:JQuery的文本菜單 - 處理右擊另一個目的

onContextMenu:function (x, y) { 
    $('#contextMenuBase').remove(); 
    $('#canvas').append('<div id="contextMenuBase"' + 
     'style="position: absolute; height:1px; width:1px; left: ' + x + 'px; top: ' + y + 'px; "></div>'); 

    $.contextMenu({ 
     selector:'#contextMenuBase', 
     events:{ 
      hide:function() { 
       $('#contextMenuBase').remove(); 
       $.contextMenu('destroy'); 
      } 
     }, 
     callback:$.proxy(function (key, options) { 
      switch (key) { 
       case "delete_figure": 
        this.setColor("ff0000"); 
        break; 
       case "delete_table": 
        this.setColor("00ff00"); 
        break; 
       default: 
        break; 
      } 
     }, this), 
     x:0, 
     y:0, 
     items:{ 
      delete_figure:{name:"Delete Figure"}, 
      delete_table:{name:"Delete Table"} 
     } 
    }); 
} 

SVG元素不能與選擇器被稱爲,所以在指針位置創建1個像素的div並使用它並觸發對象。當用戶點擊外部菜單時,它被銷燬。

我只有一個挑戰。如果兩個對象有上下文菜單,並且我先右鍵單擊,然後右鍵單擊第二個,則第一個上下文菜單應該消失,第二個出現。但在我的情況下調用hide()方法,第一個菜單被銷燬,但畫布不會接收到右鍵單擊事件,因此不會創建第二個菜單。

如何解決?

謝謝, 鮑里斯。

回答

0

您可以在選擇器中引用SVG元素,但只能使用它們的id而不使用它們的類。

相關問題