javascript - 访问 jquery 函数范围之外的 javascript 变量

标签 javascript jquery

我有一个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/

相关文章:

javascript - 删除特定字段的 novalidate

javascript - 具有嵌套空值的 Lodash/JS orderBy

javascript - '&' symbol got escaped in the url when used with ' 窗口位置'

javascript - 2checkout未经授权的错误Laravel

javascript - 从同一域的父窗口访问 iframe 中的 JavaScript 变量

javascript - Node.js 本地主机 :3000 refuses to connect

javascript - Selectize.js destroy() 方法更改选择值

Jquery ui-widget css 覆盖

Javascript: clearTimeout 似乎只能暂停,不能重置或清除?

javascript - 多个 tr 元素的选择器