我有一个jquery
函数来在右键单击事件上显示菜单。
我希望从 callback
函数内的父函数访问一个对象。
正在使用following用于获取上下文菜单的 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;
并在回调
函数中使用此变量。
奇怪的是,第一次单击菜单时,回调中的 alert(localNode.Content);
会给出正确的值。此后,即使外部函数的 alert
正确给出了不同的值,内部回调函数仍然显示与第一次相同的旧值。
最佳答案
我不知道 .contextMenu()
方法(也许您可以向我们指出一个 URL),但似乎上下文菜单只为 添加一次(!) .Container
并且对于每个后续调用,它将仅返回(因为 .Container
的上下文菜单已经存在)。这只是一个有根据的猜测。
关于javascript - 访问 jquery 函数范围之外的 javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634152/