2011-03-18 29 views
1

您好我有这样的代码片段,我需要得到具有MooTools的1.3工作:如何将从MooTools 1.2创建的函数替换为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 

有人可以帮助我白衣呢?

回答

1

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

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

我必须承认DOC 1.3只提及此方法已被弃用。

+0

这是我所看到过,我会寻找另一个更重发的脚本; O) – 2011-03-18 11:06:36

+0

你尝试过'Function.from'用绑定?可能http://jsfiddle.net/dimitar/7YNK7/尽管你真正需要的是http://jsfiddle.net/dimitar/7YNK7/1/IMO。 bindWithEvent不见了...... – 2011-03-18 11:41:42

+0

另外,不要使用'new Event(e).stop()',而是使用'e.stop'并首先检查'e && e.stop'(如果你使用'.fireEvent )'手动,依赖'e.target'也应该尽可能地避免,因为它使得'fireEvent()'更加困难(你需要传递一个包含'target:someEl'的虚拟事件对象作为属性) – 2011-03-18 11:56:27

2

创建函数被弃用后,您需要“手动”重新创建使用情况。 在这种情况下,您正在创建一个函数,该函数将成为事件侦听器并稍后在代码中进行绑定(这是Aeron Glemann的日历)。

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

​​

此外,还有在你目前编辑的是,由于将不再起作用的功能(切换功能)的开头一removeEvent调用这个函数不再有一个名字,对消除所有事件替换mousedown,为我工作。

document.removeEvents('mousedown');