如何将MooTools 1.2中的Function create替换为1.3?

时间:2011-03-18 08:36:20

标签: mootools

您好我有这个代码片段我需要使用MooTools 1.3:

this.fn = function (e, cal) {
    var e = new Event(e);
    var el = e.target;
    var stop = false;

    while (el != document.body && el.nodeType == 1) {
        if (el == this.calendar) { stop = true; }
        this.calendars.each(function (kal) {
            if (kal.button == el || kal.els.contains(el)) { stop = true; }
        });

        if (stop) {
            e.stop();
            return false;
        }
        else { el = el.parentNode; }
    }
    this.toggle(cal);
}.create({
             'arguments': cal, 
             'bind': this, 
             'event': true 
        }); <-- THIS CREATE METHOD DOES NOT WORK

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

弃用创建功能后,您需要&#34;手动&#34;重新创建用法。 在这种情况下,您将创建一个函数,该函数将成为事件侦听器并在代码中稍后绑定它(这是Aeron Glemann的日历)。

所以你需要做的是把这个函数放在你直接在它下面的addEvent中,就像这样。

document.addEvent('mousedown', function(e, cal) {
[...]
}.bind(this));

此外,在您正在编辑的功能(切换功能)开始时有一个removeEvent调用,由于此函数不再具有名称,因此将不再有效,将其替换为删除所有事件在mousedown,为我工作。

document.removeEvents('mousedown'); 

答案 1 :(得分:1)

正如我在mootools用户邮件列表中所说,我不知道“完美”的方式,但在此期间你总是可以(如果你不想使用1.2 compat版本) 从1.2 compat的功能实现中激发自己:

https://github.com/mootools/mootools-core/blob/025adc07dc7e9851f30b3911961d43d525d83847/Source/Types/Function.js#L74

我必须承认1.3的文档只提到不推荐使用此方法。