gpt4 book ai didi

javascript - 将 .bind (mootools) 与 onClick 事件一起使用

转载 作者:行者123 更新时间:2023-11-30 10:55:23 25 4
gpt4 key购买 nike

我有代码(在一个对象中)
onclick: this._addX.bind(this)
然后在另一个对象中
onclick: this._addY.bind(this)

现在,_addX() 和 _addY 几乎相同,除了它们最终都调用(在单击事件上)具有不同参数值的函数,比如 _addX 调用 foo('x') 和 _addY 调用 foo('y' ).所以我尝试了:


onclick: this._add.bind(this,'x')

onclick: this._add.bind(this,'y')
在两个对象中。当然,我更改了 _add 以接受参数。

在运行时,调用 _add 时,它看不到任何传入参数!我摸索着使用不同的语法,但没有任何效果。有任何想法吗?原始语法工作正常(没有参数)但迫使我复制一个只有一行不同的大函数,这让我很痛苦。提前致谢。

_add: function(which) {
var me = this;
var checkFull = function(abk) {
if (abk.isFull) {
alert("full");
} else {
alert(which); // which is always undefined here!
}
};
getAddressBook(checkFull); //checkFull is a fn called by getAddressBook
},

最佳答案

这是可行的,它将范围保留在元素单击事件中,范围设置为类而不是元素——将范围传递给 add 方法没有意义,它已经有了:

var foo = new Class({
Implements: [Options],
add: function(what) {
alert(what);
},
initialize: function(options) {
this.setOptions(options);

this.options.element.addEvents({
click: function() {
this.add(this.options.what);
}.bind(this)
});
}
});

window.addEvent("domready", function() {
new foo({
element: $("foo"),
what: "nothin'"
});
});

只需创建一个带有 id=foo 的元素并单击它进行测试(不会提示任何内容)。如果您的 onclick 是类中的函数/事件处理程序,而不是普通的元素单击事件,那么事情会略有不同 - 在 http://mootools.net/shell/ 上发布您的工作框架

关于javascript - 将 .bind (mootools) 与 onClick 事件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036084/

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