1

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

$(document).ready(function(){

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

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

问题是一旦页面加载就会触发。有没有一种方法可以将上下文绑定到单击处理程序的匿名函数并仅在触发单击事件时触发?您还可以解释为什么它是在页面加载而不是点击事件时触发的。

4

3 回答 3

7

采用$.proxy

$("#my-button").click($.proxy(function () {
   alert(this.name);
}, o));
于 2013-01-10T03:42:42.967 回答
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);
     * });
     */
});
于 2013-01-10T03:44:14.867 回答
0

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

//做东西

}

于 2013-01-10T04:25:18.370 回答