这一定是个例外,因为我很确定它应该有效:
var myvar; // global variable
function draggableinit(e, ui){
console.log(myvar); // still defined here
jQuery('.drop-div').droppable({
deactivate: function(event, ui){
console.log(myvar); // why undefined?
}
});
}
function set(){
var myvar = jQuery('.cont').resizable({
start: function(event, ui) { },
resize: function(event, ui) { },
stop: function(event, ui) { // functions to manipulate size }
});
return myvar;
}
jQuery(document).ready(function(){
myvar = set();
jQuery('.some-div').draggable({
"start": draggableinit
});
});
我想知道为什么myvar
在那个地方未被定义?不应该从任何地方进入吗?
答案 0 :(得分:2)
将其直接分配给window
以排除范围冲突。这应该工作。在预期范围之外创建var foo
不会自动使其成为“全局”,只是 范围块和嵌套范围的全局。
function draggableinit(e, ui){
jQuery('.drop-div').droppable({
deactivate: function(event, ui){
console.log(window.myvar); // why undefined?
}
});
}
jQuery(document).ready(function(){
window.myvar = 123;
jQuery('.some-div').draggable({
"start": draggableinit
});
});
答案 1 :(得分:0)
你正在为你的脚本创建全局 - 而不是nessecarily全局所有脚本。在window
或document
。