【问题标题】:calling a function using $.proxy javascript使用 $.proxy javascript 调用函数
【发布时间】:2015-01-12 11:34:27
【问题描述】:

我想使用 $.proxy 在点击事件上加载一个函数。 如果我使用下面的点击事件加载函数,那么一切正常。

正在运行的点击事件

$('element').click($.proxy(this.doProcess, this));

点击事件不起作用

$('element').click(function(){
    // Perform other things
    $.proxy(this.doProcess, this);  
});

如您所见,我想在加载函数之前对 click 事件执行其他操作。如果我使用“.click(function()...”而不是简单的“.click()..”,你能帮我弄清楚为什么它没有加载吗

【问题讨论】:

    标签: javascript jquery html proxy


    【解决方案1】:

    因为在第一个 sn-p 中,click 函数调用了返回的函数。在第二个 sn-p 中,您将当前 this 值绑定到函数,但您不调用返回的函数。您可以使用调用运算符 (()) 来调用函数:

    $.proxy(this.doProcess, this)();  
    

    注意,匿名函数上下文中的this(即当前事件处理程序)并不引用外部上下文的this关键字的值,您可以缓存该值:

    var that = this;
    $('element').click(function() {
        // Perform other things
        $.proxy(that.doProcess, this)(/* arguments go here */);  
    //           |               |
    //           |               ----- refers to the clicked element
    //           ----- reference of the outer context's `this` value
    });
    

    【讨论】:

    • 感谢您的快速回复。我试过了,但它没有加载函数 doProcess
    • @mak 不客气,我在 jsfiddle 上创建了一个演示,jsfiddle.net/Lnxmg5ub
    • 其实我正在使用第三方插件,我想根据需求自定义功能。无论如何,如果我可以在您的电子邮件中将代码文件发送给您吗?你只是指出问题?
    • @mak 嗯,这需要逆向工程,可能需要花费太多时间,如果我能帮助你,我会很高兴,但不幸的是,我现在很忙。如果有新问题,我建议移植另一个问题。
    • 我在此链接stackoverflow.com/questions/26937102/… 上创建了问题。所以它与这个话题有关。此功能在使用简单单击时工作正常,但如果正在执行单击功能则不起作用。我什至也试过你上面的建议。有什么想法吗?
    猜你喜欢
    • 2010-11-07
    • 2010-10-03
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2019-01-30
    • 2014-07-02
    相关资源
    最近更新 更多