我想知道如何替换Mootools 1.3中的bindWithEvent函数,文档中的示例非常基础:
Element.addEvent('click', function(e){
myFunction.bind(bind, [e]);});
但是,如果我需要将一个参数传递给事件处理程序呢?这是Mootools 1.2中的方式:
Element.addEvent('click', function(e, param) { e.stop(); alert(param) }.bindWithEvent(this,['text']);
如何在Mootools 1.3中替换它。
更新:我发现了一个非常丑陋的解决方案,但至少它在我找到内置解决方案时有效:
Element.addEvent('click', function(e){ e.stop(); this.bind.myFunc(this.param);}.bind({bind:this, param: 'text'}));
答案 0 :(得分:3)
el.addEvent('click', function(event){
myFunction(event, param1, param2); // can use .pass and bind this again
}.bind(this));
很难解释为什么它会被弃用。
类上下文中的示例:
var foo = new Class({
initialize: function(el) {
document.id(el).addEvent('click', function(event){
this.foo(event, "hello");
}.bind(this));
},
foo: function(event, what) {
console.log(event, this); // this is the class instance
alert(what);
}
});
new foo("foo");
答案 1 :(得分:2)
您应该阅读从1.2到1.3页面的升级:http://github.com/mootools/mootools-core/wiki/Update-from-1.2-to-1.3
这就是我想出的:http://jsfiddle.net/MBx2D/2/