2013-01-03 62 views
0

我花了太多時間在Google上尋求幫助,並試圖自己解決它。jQuery UI:對象不支持此屬性或方法

這是造成所有麻煩的代碼看起來是這樣的:

$("#nameBox").dialog({ 
    "modal":  false, 
    "autoOpen":  false, 
    "resizable": false, 
    "height":  "auto", 
    "width":  350, 
    "open":   function(){$("input[name='name']",this).val('');}, 
    "buttons":  {"Save":function(){ 
     var current_user = $("input[name='name']",this).val(); 
    }} 
}); 

在IE8,我得到一個消息「對象不支持此屬性或方法」,這顯然是由這一行造成的:

 var current_user = $("input[name='name']",this).val(); 

什麼讓我困惑的是,對話框打開,這意味着該代碼得到執行成功,即使他們都使用相同的方法:

"open":   function(){$("input[name='name']",this).val('');}, 

任何形式的幫助將不勝感激。

謝謝!

+0

有同樣的結果有很大的文章:「輸入[名稱=名稱]」 ??? –

+3

您正在使用'this'作爲選擇器的上下文。我猜這兩行代碼執行時'this'的值不一樣;嘗試添加一些語句來找出這些點是什麼,並做出必要的修改。 –

回答

0

請注意,在兩種情況下,this都未設置爲相同的對象。

試試下面的代碼中你最喜歡的JavaScript控制檯:

var test = { "prop1": function(){console.log(this);}, "prop2":{"Save":function(){console.log(this);}}, "prop3": 10} 

然後運行test.prop1()test.prop2.Save()。您將看到,在第一次嘗試中,您將記錄對象test,在第二個示例中,您將記錄內部對象prop2

你可以閱讀一下here

相關問題