jQuery - 从jQuery函数中访问变量

时间:2012-08-24 13:23:31

标签: jquery

人。我有这样的事情:

myThing = {
    str:"my string",
    setClick: function(){
        $("button").click(function(){
            alert(this.str);
        });
    }
}

myThing.setClick();

问题是当我点击按钮时,该功能不知道str是什么。 alert(str)给了我一个错误(str is not defined)并且没有提醒。 alert(this.str)为我提供了警告但包含undefined

我可以看到this引用了该按钮,该按钮没有任何名为str的属性。那么如何访问jQuery函数中的str呢?

3 个答案:

答案 0 :(得分:5)

this事件处理程序之外的setClick中保存对click的引用:

myThing = {
    str:"my string",
    setClick: function() {
        var self = this;
        $("button").click(function() {
            alert(self.str);
        });
    }
}

<强> DEMO

答案 1 :(得分:3)

您始终可以按名称

引用对象
myThing = {
    str:"my string",
    setClick: function(){
        $("button").click(function(){
            alert(myThing.str);
        });
    }
}

myThing.setClick();

答案 2 :(得分:0)

您可以使用javascript函数bind强制执行函数的上下文。我发现它在这种情况下很有用。它允许您在被绑定的函数中定义this的值。

myThing = {
    str:"my string",
    setClick: function(){
        $("button").click(function(e){
            // 'this' is myThing
            // $(e.currentTarget) is the button on which the event handler was attached
        }.bind(this));
    }
}

myThing.setClick();