在JQuery方法中设置匿名函数的'this'上下文

时间:2013-01-10 03:40:47

标签: javascript jquery javascript-events this

我想通过以下单击绑定方法传递特定上下文:

$(document).ready(function(){

    var o = {
        name : 'I\'m object O'
    };

    $('#my-button').click(function(){
        alert(this.name);
    }.call(o));
});

问题是,只要页面加载就会触发此操作。有没有办法可以将上下文绑定到click处理程序的匿名函数,并且只有在触发click事件时才触发它?你也可以解释为什么它是在页面加载而不是点击事件上触发的。

3 个答案:

答案 0 :(得分:7)

使用$.proxy

$("#my-button").click($.proxy(function () {
   alert(this.name);
}, o));

答案 1 :(得分:1)

它无效,因为您在声明时调用此匿名函数。试试这个:

$(document).ready(function(){

    var o = {
        name : 'I\'m object O'
    };

    $('#my-button').click(function(){
        function(){
            alert(this.name);
        }.call(o)
    });
    /*
     * Or shorter:
     * $('#my-button').click(function(){
     *     alert(o.name);
     * });
     */
});

答案 2 :(得分:0)

(文档)$ .mousedown(函数(E){

//做东西

}