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();