看來,你不能用jQuery做到這一點:爲什麼不能存儲jQuery方法?
f = $("#someElement").text
f("Bar!")
在Chrome它給了我這個錯誤:「類型錯誤:[對象反對全球]有沒有方法‘空’」
這是爲什麼?
看來,你不能用jQuery做到這一點:爲什麼不能存儲jQuery方法?
f = $("#someElement").text
f("Bar!")
在Chrome它給了我這個錯誤:「類型錯誤:[對象反對全球]有沒有方法‘空’」
這是爲什麼?
的text
功能使得使用在內部的this
值。
this
的值取決於您如何調用該函數。
當你調用$("#someElement").text()
,你是jQuery中的一個實例的情況下調用它。 jQuery實例有一個empty
方法。
當您撥打f()
時,您在默認對象(window
)的上下文中調用它。 window
沒有empty
方法。
我明白了。但是,當我嘗試通過傳遞文本函數作爲結果從ajax調用回調來嘗試變得聰明時,我遇到了這種情況: – monoceres
您需要提供的方法,才能正常運作情況下...
這個怎麼樣?
someElement = $("#someElement");
f = someElement.text.bind(someElement);
f("Bar!")
或'f = $ .fn.text.bind(someElement);'或者jQuery :'f = $ .proxy($。fn.text,someElement);' –
這種做法失敗了,我試圖通過將文本函數作爲回調來實現,簡單的解決方案是少一點聰明並將其傳遞給閉包:) – monoceres
@monoceres但你可以在回調方法上設置上下文,那麼你的問題是什麼呢? –
'this'取決於你如何調用一個函數。這是底線。 – elclanrs
http://jsfiddle.net/bdN4z/1/ – elclanrs
因爲函數的執行上下文會有所不同 –