我无法在jQuery事件函数之外访问array / obj

时间:2012-08-17 15:53:32

标签: javascript jquery arrays object global

所以我有一个对象或数组,在任何东西的开头声明,在所有东西之外:

var Thing = {title:'horse'};

然后我得到了: -

$('.clickedIt').fadeOut(200, function() { console.log(Thing.title); }

那会失败。但是,如果我将相同的控制台日志放在fadeOut上面,那就没问题了。

2 个答案:

答案 0 :(得分:4)

如果您想要某些东西是全局的,只需在window对象上定义它。

window.Thing = { title: 'horse '};

然后像这样使用它:

$( '.clickedIt' ).fadeOut(200, function() { 
    console.log( window.Thing.title ); 
});

请注意,不建议在window对象上放置一些变量,我建议查看名称间距:http://addyosmani.com/blog/essential-js-namespacing/

以下是一个例子:

//simple JavaScript module
( function( window ) {
    //define your applications root namespace
    window.myApp = {
        Thing: { title: 'horse '}
    };
})( window );

//jQuery ready function
$( function() {
    $( '.clickedIt' ).fadeOut( 200, function() { 
        console.log( myApp.Thing.title ); 
    });
});

答案 1 :(得分:1)

你赋予title马的值是未定义的,用引号括起来使它成为字符串litral,

<强> Live Demo

var Thing = {title:'horse'};
$('.clickedIt').fadeOut(200, function() { console.log(Thing.title); })​