MooTools / JS:bindWithEvent

时间:2009-12-29 00:06:39

标签: javascript mootools

我正在开发的代码库中有这篇文章:

this.element.addEvent('click', this.clickEvent.bindWithEvent(this));

我想更改它,以便click事件确保首先加载窗口。所以我试过了:

var t = this;
this.element.addEvent('click', function() {
    window.addEvent('load', function() {
        t.clickEvent.bindWithEvent(t));
    });
});

但这似乎并没有使它工作。我错过了什么?

2 个答案:

答案 0 :(得分:2)

当用户点击某些内容时,您正在为load事件添加处理程序,_ the load`事件已被触发。因此,没有任何反应。

您应该在click事件的事件处理程序中添加load处理程序。 (交换两个addEvent行)

答案 1 :(得分:0)

在mootools中你倾向于使用 domready 而不是加载但实际上,按照建议这样做是行不通的,因为它缺少上下文:

  

this.element.addEvent('click',this.clickEvent.bindWithEvent(this));

所以你在这里的一个班级工作 - 因此,请确保你在domready事件上实例化它,比如......

window.addEvent("domready", function() {
    // whatever you need to do...
    var foo = new myClass($("someElement"), {option: value}); // example instantiation
    // if the binding is not in the .initialize, then call the right method...
    // foo.bindMyEvents();
});

只要类实例在domready中,你就没事了。如果那不是一个选项,请参阅哪个方法绑定事件并在domready上调用它。