[英]access javascript variables outside the scope of a jquery function
我有一個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
正確給出了不同的值,內部回調函數仍顯示與第一次相同的舊值。
我不知道.contextMenu()
方法(也許您可以將我們指向一個URL),但似乎上下文菜單只為.Container
添加了一次(!),對於隨后的每次調用都只會返回(因為.Container
的上下文菜單已存在)。 這只是有根據的猜測。
現在感覺很愚蠢,因為我在這里錯過了一件非常簡單的事情。 我可以通過在函數外部聲明變量來解決此問題,就像使用全局變量一樣。
以下是更改:
var localNode;
function OnContextMenu() {
//alert(key + ' ' +this.Node.Content);
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"}
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.