2010-06-10 38 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');}); 
相关问题