我有以下HTML:
<input type="text">
我想设置此输入的值:
$("input").val.call (this, "hi");
jQuery抛出错误:
Uncaught TypeError: undefined is not a function
为什么会这样?如何使用apply
或call
?
我猜问题是this
,window
以上是this
。这里必须有{{1}}的价值?
答案 0 :(得分:4)
问题在于this
。
范围应该是jQuery对象$("input")
。所以:
var myThis = $("input");
myThis.val.call (myThis, "hi");
undefined
问题是jQuery内部会尝试调用该范围对象上的其他jQuery函数。您的this
(可能是window
)没有它们。
答案 1 :(得分:4)
你可以这样做:
$.fn.val.call($("input"), "hi");
所有jQuery方法都可以找到$.fn.METHOD
。当你以正常方式调用它们时,jQuery对象就是上下文;当你使用.call()
时,你必须明确地传递上下文作为第一个参数。