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

Javascript 在JQuery方法中设置匿名函数的“this”上下文,javascript,jquery,this,jquery-events,Javascript,Jquery,This,Jquery Events,我想通过以下单击绑定方法传递特定上下文: $(document).ready(function(){ var o = { name : 'I\'m object O' }; $('#my-button').click(function(){ alert(this.name); }.call(o)); }); 问题是一旦页面加载,就会触发此操作。是否有一种方法可以将上下文绑定到click处理程序的匿名函数,并仅在触发click事

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

$(document).ready(function(){

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

    $('#my-button').click(function(){
        alert(this.name);
    }.call(o));
});
问题是一旦页面加载,就会触发此操作。是否有一种方法可以将上下文绑定到click处理程序的匿名函数,并仅在触发click事件时触发它?您还可以解释为什么它是在页面加载而不是单击事件时触发的。

使用

使用


它不起作用,因为您正在声明此匿名函数时调用它。请尝试以下方法:

$(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);
     * });
     */
});

它不起作用,因为您正在声明此匿名函数时调用它。请尝试以下方法:

$(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);
     * });
     */
});

$document.mousedown函数{

//做事


}$document.mousedown函数{

//做事


}

也感谢您的回答。向上投票,因为它解释了我为什么会出现这个问题,以及如何在香草中绕过它:谢谢你的回答。向上投票,因为它解释了我的问题为什么会发生,以及如何在香草js中绕过它:与问题完全无关。与问题完全无关。