2012-08-17 83 views
0

所以我有一个对象或数组,在任何事情开头声明的,外面的一切:我无法访问阵列/ OBJ以外的jQuery事件函数

var Thing = {title:'horse'}; 

然后我有: -

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

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

+1

它是如何失败? “fadeOut”在“Thing”方面被称为? – pimvdb 2012-08-17 15:54:22

+1

你能为我们提供一个更完整的脚本吗?这里的问题很大程度上取决于“事情”的范围。 – jackwanders 2012-08-17 15:55:13

回答

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

T他珍惜你分配给冠军马引号内未定义包裹它,使之弦litral,

Live Demo

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

拒绝投票的原因? – Adil 2012-08-17 16:01:19

+0

我没有downvote,但是OP声明它可以在外面使用'console.log',所以'horse'不是问题。 – pimvdb 2012-08-17 16:02:26

+0

它看起来好像你只是复制并粘贴问题。我现在看到你的改动,现在你解释了,但那是一个类型化的演示,所以这不是问题。 – waxical 2012-08-17 16:03:04