Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery-从jQuery函数中访问变量_Jquery - Fatal编程技术网

jQuery-从jQuery函数中访问变量

jQuery-从jQuery函数中访问变量,jquery,Jquery,伙计们。我有这样的想法: myThing = { str:"my string", setClick: function(){ $("button").click(function(){ alert(this.str); }); } } myThing.setClick(); 问题是,当我单击按钮时,函数不知道str是什么警报(str)给我一个错误(str未定义))并且没有警报alert(this.str)提供警

伙计们。我有这样的想法:

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

myThing.setClick();
问题是,当我单击按钮时,函数不知道str是什么<代码>警报(str)给我一个错误(
str未定义)
)并且没有警报
alert(this.str)
提供警报,但包含
未定义的


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

您可以随时按名称引用对象

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

myThing.setClick();

setClick
中,在
click
事件处理程序外部保存对该
的引用:

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

您可以使用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();