如何在调用函数时设置jQuery?
使用jQuery,我设置了一个链接标签的点击处理程序,如下所示:
$('#lnk').click(handleClick);
handleClick做这样的事情:
function handleClick() { var $this = $(this); ... }
现在我需要在点击#lnk之外直接调用handleClick()。 有没有办法让我在调用handleClick时设置this
?
您可以使用apply()
或call()
:
handleClick.call(theElementThatShouldBeThis);
但当然theElementThatShouldBeThis
必须是一个DOM元素或者被接受为jQuery()
输入。
如果你正在访问handleClick
的event
元素,它会变得更加棘手。 但我会假设你没有;)
您也可以通过调用$('#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();