jquery
右クリックイベントでメニューを表示する機能があります。関数内の親関数からオブジェクトにアクセスしたいcallback
。
次のJQuery プラグインを使用して、コンテキスト メニューを取得しています。
コードは次のとおりです。
function OnContextMenu() {
//alert(key + ' ' +this.Node.Content);
var localNode = this.Node;
alert(localNode.Content); //CORRECT NODE VALUE GETS ALERTED
$.contextMenu({
selector: '.Container',
callback: function(key, options) {
var m = "clicked: " + key;
alert(localNode.Content); //ALWAYS PRINTS THE VALUE OF THE VERY FIRST NODE THAT WAS CLICKED.
// window.console && console.log(m) || alert(m);
},
items: {
"edit": {name: "Edit", icon: "edit"},
"cut": {name: "Cut", icon: "cut"},
"copy": {name: "Copy", icon: "copy"},
"paste": {name: "Paste", icon: "paste"},
"delete": {name: "Delete", icon: "delete"},
"sep1": "---------",
"quit": {name: "Quit", icon: "quit"}
}
});
}
ご覧のとおり、値を変数に格納しています。
var localNode = this.Node;
関数内でこの変数を使用しcallback
ます。これに関する奇妙な点はalert(localNode.Content);
、メニューが最初にクリックされたときにコールバックの内部が正しい値を与えることです。その後alert
、外側の関数の が異なる値を正しく返しても、内側のコールバック関数は最初と同じ古い値を表示し続けます。