使用jQuery似乎无法实现此功能:
f = $("#someElement").text
f("Bar!")
在Chrome浏览器中,它给了我这个错误:“TypeError: Object [object global] has no method 'empty'”,为什么会这样呢?http://jsfiddle.net/bdN4z/。
使用jQuery似乎无法实现此功能:
f = $("#someElement").text
f("Bar!")
text
函数在内部使用this
值。
this
的值取决于如何调用函数。
当您调用$("#someElement").text()
时,您是在jQuery实例的上下文中调用它。jQuery实例具有一个empty
方法。
当您调用f()
时,您是在默认对象(window
)的上下文中调用它。window
没有empty
方法。
someElement = $("#someElement");
f = someElement.text.bind(someElement);
f("Bar!")
f = $.proxy($.fn.text, someElement);
或 f = $.fn.text.bind(someElement);
- A. WolffgetChangeTextFn = function (el) {return function (newText) {el.text(newText);};};
,这样如果一个初级开发者两个月后再看它,他不会再去stackoverflow上寻找答案。 - Mabedan
f = function(x){$("#second").text(x);};
演示。 - Moob