Javascript 将'this'传递给.keyup()
问题: 我正在尝试使用Javascript 将'this'传递给.keyup(),javascript,jquery,function,scope,this,Javascript,Jquery,Function,Scope,This,问题: 我正在尝试使用this.str。是否有方法将此传递给.keyup()函数 function foo() { var str = "some text"; $('#inputbox').keyup(function (e) { alert(str); //<-- This will output "some text" alert(this.str); //<-- This will output "undefined" })
this.str
。是否有方法将此传递给.keyup()
函数
function foo() {
var str = "some text";
$('#inputbox').keyup(function (e) {
alert(str); //<-- This will output "some text"
alert(this.str); //<-- This will output "undefined"
});
}
函数foo(){
var str=“一些文本”;
$('#inputbox').keyup(函数(e){
警报(str);//您可以将此
存储在变量中,通常将该变量命名为\u this
或\u self
或\u me
像这样:
var str=“一些文本”;
var_this=这个;
$(“#按钮”)。单击(函数(){
console.log(str);
console.log(_this.str);
});
单击我
事实上,在JavaScript中,每个函数都有自己的作用域
,因此在键控
回调中,这个不会引用foo
,而是引用$(“#输入框”)
,它没有一个名为str
的属性,这就是为什么您得到了未定义的。这意味着您无法在键控
回调范围内访问foo.str
您可以做的是遵循模块
模式代码样式,将foo
的str
存储在变量
中,然后在键控
回调中访问它:
function foo() {
var str = "some text";
var _self = this;
_self.str = str;
$('#inputbox').keyup(function (e) {
alert(str); //<-- This will output "some text"
alert(_self.str); //<-- This will output "some text" too
});
}
函数foo(){
var str=“一些文本”;
var _self=这个;
_self.str=str;
$('#inputbox').keyup(函数(e){
警报(str);//在该上下文中,此
指的是$(“#输入框”)
。是否要为函数本身分配属性?对我来说,它不起作用。@user123456将代码转换为代码段,它们似乎都能正常工作。我正在调用foo at ready function是否设置了this.str
?因为如果您从未设置过它,除了在我的示例中未定义之外,您无法从中获取值t不需要设置this.str
,因为var-str
在全局范围内,并且在全局范围内var-str
与this.str
相同。这仅适用于全局范围。如果不在全局范围内,则需要执行var-str=this.str=“一些文本”
我仍然将此作为窗口对象。@user123456我的错,我忘了将str
重新分配给\u self
,确实是在本例中,此指的是全局窗口
对象。