2010-06-10 36 views
1

我想在Prototype中的現有事件處理程序之前添加一個事件監聽器/處理程序。這裏是例子:如何在Prototype中添加JS事件處理函數?

<form ... onsubmit="alert('foo')" id="f1"> 
    $('f1').observe("submit", function() { 
    alert('do this before foo'); 
    }); 
</form> 
+1

我建議不依賴於綁定的順序......也許有另一種方式做你想要什麼。使onsubmit有一個函數,在做它正在做的事情之前觸發不同的自定義事件.... – 2010-06-10 12:23:54

+0

優秀的點,我想我可能剛剛找到解決方案。我的問題的背景是一個Rails的remote_form(),它增加了onsubmit Ajax調用。現在我只需在此Ajax請求上添加一個創建調用即可預先添加其他事件處理程序。謝謝! – chinshr 2010-06-10 12:39:14

回答

0
Observer = Class.create({ 
initialize: function() { 
    this.callbacks = []; 
}, 
prependCallback = function(callback) { 
    this.callbacks.unshift(callback); 
}, 
appendCallback = function(callback) { 
    this.callbacks.push(callback); 
}, 
runCallbacks = function() { 
    this.callbacks.each(
    function(callback) { 
    callback(); 
    } 
); 
} 
}); 

bunchOfCallbacks = new Observer(); 
bunchOfCallbacks.appendCallback(function(){alert('second');}); 
$('anything').observe('anyEvent', bunchOfCallbacks.runCallbacks); 
bunchOfCallbacks.prependCallback(function(){alert('first');}); 
相關問題