我不知道關於MooTools的,但在本地JS一個簡單的方法來做到這一點..
var orgAppendChild = document.appendChild;
document.appendChild = localAppendHandler;
var domElement = new Class({...});
var MyObject = new domElement(...);
// document.appendChild(MyObject);
var ss = document.createElement('tr');
document.appendChild (ss);
function localAppendHandler(MyObject)
{
if (MyObject instanceof domElement)
UrCustomRoutine(MyObject)
else
orgAppendChild(MyObject);
}
function UrCustomRoutine(MyObject){
//your custom routine
}
希望這有助於
更新: 從您進一步解釋(處理的appendChild任何DOM元素),我明白沒有通用的方式來定義本地hanlders來捕捉事件。
但有一個解決方法(這是非常醜陋的,我知道)。意味着你必須在使用appendChild之前爲DOM元素定義一個LocalHandler。
這樣 的document.getElementById( 'divTarget')之前的appendChild()
您必須將localhandler重新分配給需要訪問
orgAppendChild = document.getElementById('divTarget').appendChild;
document.getElementById('divTarget').appendChild = localAppendHandler;
var sss = document.createElement('table');
document.getElementById('divTarget').appendChild(sss);
另一種替代的元素: 如果你想保持簡單,我建議這種替代方法。創建AppendChild本地方法,接受對象和節點名稱作爲參數。
function AppendChild(MyObject ,Node)
{
if (MyObject instanceof domElement)
//your custom routine
else if (Node=="" && (MyObject instanceof domElement==false))
document.appendChild(MyObject);
else if (Node!="" && (MyObject instanceof domElement==false))
eval("document.getElementById('" + Node + "').appendChild(MyObject);");
}
而且
如果你想添加DOM元素來記錄
AppendChild(DOMelement,"")
如果你想DOM元素追加內的其他 容器
AppendChild(DOMelement,"divTarget")
如果你想處理您的自定義對象
AppendChild(customObject,"")
這是做到這一點的最好辦法。
現在,這確實是:** jailtime阻止共享/公共代碼更新**。我完全支持這一點;如果我能獲得對他們違揹我的意願的事情的特赦,顯然。 – ZJR 2009-12-17 11:05:01