更新:
重新下方的評論:
實際上是我想要做的是結果賦給action屬性...
在你的問題說:
如果我打電話... Dashboard.form.action
...
這使得它看起來像你期待action
是一個函數(你不要「調用」非函數)。
如果您希望它是一個字符串(來自#upload_form
的「action」屬性值),則根本不需要使用函數。但你做需要確保你在做#upload_form
元素已經存在於DOM中。
要麼這麼做,要麼將您的腳本放在標記下面(anywhere below很好; just before or just after the closing </body>
tag工作正常),要麼將您的腳本包裝在ready
調用中。
所以,你的代碼變爲:這如果是後的#upload_form
在標記:
var Dashboard = {
form : {
action : $('#upload_form').attr('action'),
//snip (more functions)
}
};
...或者這個,如果你想使用ready
(任何使用Dashboard
將不得不等待別人直到ready
爲好):
jQuery(function($) {
var Dashboard = {
form : {
action : $('#upload_form').attr('action'),
//snip (more functions)
}
};
});
注意,在第二種情況下,Dashboard
將不再是一個全球變量。這是一個好事,但如果你需要它是全球出於某種原因,你可以將其導出:
jQuery(function($) {
var Dashboard = {
form : {
action : $('#upload_form').attr('action'),
//snip (more functions)
}
};
// Export the global
window.Dashboard = Dashboard;
});
只要確保沒有嘗試使用Dashboard
ready
之前已經解僱。
原來的答覆:
你有一個額外的對()
:
action: function(){return $('#upload_form').attr('action');}()
// here -------^^
通過把他們那裏,你通話立即功能,並指定結果稱它爲action
屬性。你只是想分配的功能本身的財產,所以不要把()
末叫它:
action: function(){return $('#upload_form').attr('action');}
這是正是你就不會在這裏使用()
同樣的原因(讓我們假設你有一個名爲foo
功能),如果你想f
指foo
:
var f = foo;
如果說
var f = foo();
...你會是致電foo
,不是指它。
您創建並初始化該對象,但HTML表單目前未加載......這可能是錯誤嗎? – silly 2012-02-23 12:33:21