0

我正在编写一些使用jQuery Countdown 插件的代码。该插件允许传递一个回调函数,该函数将在倒计时为零时执行:

{
    until: new Date(remaining),
    onExpiry: runSomeAction
}

runSomeAction用于$(this)拾取达到零的计时器。我想包装runSomeAction,但我知道如何做到这一点的唯一方法是向它添加一个参数,如下所示:

{
    until: new Date(remaining),
    onExpiry: function() {
        // my logic here...
        runSomeAction($(this));
    }
}

但现在我必须将所有$(this)引用更改runSomeAction为参数名称。

有没有办法包装runSomeAction它可以继续使用$(this)而我不必改变它?

4

2 回答 2

6

您可以使用调用应用javascript 函数来更改this给定函数的上下文。像这样的东西应该适合你:

onExpiry: function() {
    // my logic here...
    runSomeAction.call($(this));
}

现在在 runSomeAction 函数中,从调用函数的那一点开始this将相等$(this)

于 2013-05-02T23:05:53.217 回答
5

我不太清楚你在追求什么。更多代码会清除我的答案。

您应该能够使用 jQuery 的.proxy( function, context )方法。

根据您所追求的范围,它要么是

onExpiry: $.proxy(runSomeAction,this)

或者

onExpiry: function() { runSomeAction.call(this); }

如果您想要 jQuery 对象,您可以将其更改为$(this)在代理中。

于 2013-05-02T23:10:39.960 回答