使用jQuery,我设置了一个链接标签的点击处理程序,如下所示:
$('#lnk').click(handleClick);
handleClick做这样的事情:
function handleClick() {
var $this = $(this);
...
}
现在我需要在点击#lnk之外直接调用handleClick()。有没有办法在调用handleClick时设置this
?
答案 0 :(得分:24)
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
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();