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 に答える