how to replace bindwithevent in mootools 1.3

2019-02-25 19:41发布

I wonder how to replace the bindWithEvent function in Mootools 1.3, the example in the documentation is very basic:

Element.addEvent('click', function(e){
myFunction.bind(bind, [e]);});

But, what about if I need to pass a param to the event handler? This is the way in Mootools 1.2:

Element.addEvent('click', function(e, param) { e.stop(); alert(param) }.bindWithEvent(this,['text']);

Any idea on how to replace this in Mootools 1.3.

Update: I found a very ugly solution, but a least it works while I find a built-in solution:

Element.addEvent('click', function(e){ e.stop(); this.bind.myFunc(this.param);}.bind({bind:this, param: 'text'}));

2条回答
Emotional °昔
2楼-- · 2019-02-25 20:20
el.addEvent('click', function(event){
    myFunction(event, param1, param2); // can use .pass and bind this again
}.bind(this));

it's hard to explain why it got deprecated though.

example in a class context:

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");
查看更多
贪生不怕死
3楼-- · 2019-02-25 20:24

You should read the upgrade from 1.2 to 1.3 page: http://github.com/mootools/mootools-core/wiki/Update-from-1.2-to-1.3

This is what I came up with: http://jsfiddle.net/MBx2D/2/

查看更多
登录 后发表回答