gpt4 book ai didi

Jquery 绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-01 03:26:22 25 4
gpt4 key购买 nike

我读过很多解释,但似乎我无法理解绑定(bind)的概念。在下面的代码中,如何使“this”引用对象而不是调用“搜索”函数的元素?

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 >
<title></title>
</head>
<body>
<input id="inpt">
<script>
obj = {
theElement: null,
func1: function(inpt) {
this.theElement = $(inpt);
this.theElement.keyup(this.search);
},
search: function(e) {
alert(this); //'this' refers to the input element (#inpt) but I want it to refer to 'obj'
}
};
obj.func1('#inpt');
</script>
</body>
</html>

希望这是有道理的......

最佳答案

两种方式:

1。使用你自己的闭包:

obj = {
theElement: null,
func1: function(inpt) {
var self = this;
this.theElement = $(inpt);
this.theElement.keyup(function() {
self.search();
});
},
search: function(e) {
alert(this); //'this' refers to the input element (#inpt) but I want it to refer to 'obj'
}
};

更多阅读:Closures are not complicated

编辑:虽然为patrick points out ,您已经在 obj 中引用了它,因此技术上不需要 self。上面是更多的通用解决方案(特别是当您使用工厂函数而不是单例对象时)。

2。使用一个 jQuery 为您创建的:

...来自jQuery.proxy :

obj = {
theElement: null,
func1: function(inpt) {
this.theElement = $(inpt);
this.theElement.keyup(jQuery.proxy(this.search, this));
},
search: function(e) {
alert(this); //'this' refers to the input element (#inpt) but I want it to refer to 'obj'
}
};

更多阅读:You must remember this

关于Jquery 绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com