2009-05-25 67 views
0

我有這個片段不起作用:原型:Element.remove.bind(富)如預期

self.puff({duration: 0, queue: 'end', 
     afterFinish: Element.remove.bindAsEventListener(self) 
    }); 

自我是一個元素;它應該在文檔上的所有效果完成時從文檔中移除一個元素。

不幸的是,這不起作用,因爲「element.parentNode未定義」失敗。 如果我用function() { self.remove(); }代替Element.remove.bindAsEventListener(self)那麼它會。我試過只是綁定()具有相同的結果。

問題是:爲什麼它不工作,我應該如何使用bind()?

用於顯示在完成所有效果後刪除元素的更簡單方法的獎勵點。

回答

2
self.puff({duration: 0, queue: 'end', 
    afterFinish: function() { self.remove(); } 
}); 

這種放置方式有什麼問題?你甚至建議你自己。在任何情況下,你都不需要將它綁定爲一個事件監聽器,因爲它只是一個Prototype的Syntable Sugar版本的綁定,以確保函數的第一個參數始終是事件對象。由於afterFinish不是瀏覽器事件,因此不需要。

最後,你綁定了不正確的函數。你應該的自我方法實例綁定:

self.puff({duration: 0, queue: 'end', 
    afterFinish: self.remove.bind(self) 
}); 
+0

哦!我想我會留在`function(){self.remove();}我想我必須使用Element.remove.curry()不綁定() 無論哪種方式,我想我會留在`function(){self.remove(); }` – alamar 2009-05-25 15:19:23

0

爲什麼不能簡單地用:

function(){ self.remove(); } 

這其實更具可讀性是。

+0

我做到了,但我想知道爲什麼bind()的失敗 `Element.remove.bind(個體經營)`是更好IMO,如果只是它的工作。 – alamar 2009-05-25 15:09:33