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

Setting the 'this' context of an anonymous function within a JQuery Method

本文关键字:函数 上下文 方法 this JQuery 设置      更新时间:2023-09-26

我想传递一个特定的上下文给下面的点击绑定方法:

$(document).ready(function(){
    var o = {
        name : 'I''m object O'
    };
    $('#my-button').click(function(){
        alert(this.name);
    }.call(o));
});

问题是这在页面加载时就会被触发。是否有一种方法,我可以绑定上下文到点击处理程序的匿名函数,并有它触发只有当点击事件被触发?另外,你能解释一下为什么它是在页面加载时触发的,而不是点击事件吗?

使用$.proxy

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

它不起作用,因为你在它声明的时候调用了这个匿名函数。试试这个:

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

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

//做东西

}