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

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

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

handleClick做这样的事情:

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

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

您可以使用apply()call()

 handleClick.call(theElementThatShouldBeThis); 

但当然theElementThatShouldBeThis必须是一个DOM元素或者被接受为jQuery()输入。

如果你正在访问handleClickevent元素,它会变得更加棘手。 但我会假设你没有;)

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

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

呼叫

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[, ...]]]); 

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

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

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

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