0

这一定是一些例外,因为我很确定它应该可以工作:

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在那个地方未定义?它不应该可以从任何地方访问吗?

文档:http: //jqueryui.com/draggable/

4

2 回答 2

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
    });
});
于 2013-03-14T17:28:22.323 回答
0

您正在为您的脚本使其全局化 - 而不是对所有脚本都具有全局性。window在或中创建它document

于 2013-03-14T17:32:16.353 回答