2011-03-18 57 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');