0

我有一个 js 函数,到目前为止,它一直是点击事件的回调,因此严重依赖于“this”伪变量。'this' 是一个 <li> 元素。

但是,我现在有一种情况,有时会使用更复杂的路线触发它,在这种情况下,“this”是一个完全不同的元素。但是,在调用该函数之前,我能够找到相关的 <li>,但是有没有办法可以将它作为“this”输入?我曾想过在 <li> 上使用 .each(),但它不适用于单个元素。

编辑事实证明 each() 确实适用于单个元素..错误原来是别的东西。

尚未删除此问题,因为它可能对其他人有用

4

2 回答 2

2

您正在寻找调用方法:

function onClick() {
    console.log(this); // will be the #test element in both cases
    return false;
}

$('#test').click(onClick);

$('#test2').click(function() {
    onClick.call($('#test')[0]);
    return false;
});

虽然这也可以使用apply

onClick.apply($('#test')[0]);

传递实际的[0]DOM 元素而不是 jQuery 包装集是必要的。

于 2009-06-30T16:24:23.700 回答
0

尝试使用jquery.callback 插件。它保留回调的上下文。

于 2009-06-30T16:28:02.467 回答