2012-08-17 54 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