SVG キャンバス オブジェクトに contextmenu を実装しています。
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を作成して使用し、オブジェクトをトリガーしました。ユーザーがメニューの外をクリックすると、破棄されました。
私の挑戦はただ一つ。2 つのオブジェクトにコンテキスト メニューがあり、最初に右クリックしてから 2 番目を右クリックすると、最初のコンテキスト メニューが消え、2 番目に表示されます。しかし、私の場合、hide() メソッドが呼び出され、最初のメニューが破棄されましたが、キャンバスは右クリック イベントを受信せず、その結果、2 番目のメニューが作成されません。
修正方法は?
ありがとう、ボリス。