使用call或apply调用jQuery函数

时间:2014-04-22 09:29:40

标签: javascript jquery html

我有以下HTML:

<input type="text">

我想设置此输入的值:

$("input").val.call (this, "hi");

jQuery抛出错误:

  

Uncaught TypeError: undefined is not a function

为什么会这样?如何使用applycall

调用jQuery函数

我猜问题是thiswindow以上是this。这里必须有{{1}}的价值?

JSFIDDLE

2 个答案:

答案 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()时,你必须明确地传递上下文作为第一个参数。