如何在调用函数时设置jQuery?

时间:2010-10-15 19:06:33

标签: javascript jquery

使用jQuery,我设置了一个链接标签的点击处理程序,如下所示:

$('#lnk').click(handleClick);

handleClick做这样的事情:

function handleClick() {
    var $this = $(this);
    ...
}

现在我需要在点击#lnk之外直接调用handleClick()。有没有办法在调用handleClick时设置this

3 个答案:

答案 0 :(得分:24)

您可以使用apply()call()

handleClick.call(theElementThatShouldBeThis);

但当然theElementThatShouldBeThis必须是DOM元素或被jQuery()作为输入接受的内容。

如果您访问event内的handleClick元素,则会变得更加棘手。但我会假设你没有;)

您也可以通过调用#lnk(模拟点击)在$('#lnk').click()的上下文中执行事件处理程序。

答案 1 :(得分:2)

我认为你正在寻找“打电话”或“申请”:

呼叫

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call

应用

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply

来自MDC

var result = fun.apply(thisArg, [argsArray]);

or

var result = fun.call(thisArg[, arg1[, arg2[, ...]]]); 

答案 2 :(得分:0)

使用Function.apply并传入查询返回的DOM元素。

handleClick.apply($('#lnk')[0]);

或者更好的是,让jQuery模拟元素上的点击(假设您已经附加了点击事件处理程序)。

$('#lnk').click();