用Prototype触发一个事件

有没有人知道在Prototype中触发事件的方法,就像使用jQuery的触发器函数一样?

我已经使用观察方法绑定了一个事件监听器,但我也希望能够以编程方式触发事件。

提前致谢

event.simulate.js适合您的需求。

我已经用了好几次了,就像魅力一样。 它允许您手动触发本地事件 ,如单击或hover,如下所示:

 $('foo').simulate('click'); 

关于这一点的好处是,所有附加的事件处理程序仍然会被执行,就像你自己点击了元素一样。

对于自定义事件,您可以使用标准原型方法Event.fire()

我不认为有一个内置的原型,但你可以使用这个(没有testing,但至less应该让你在正确的方向):

 Element.prototype.triggerEvent = function(eventName) { if (document.createEvent) { var evt = document.createEvent('HTMLEvents'); evt.initEvent(eventName, true, true); return this.dispatchEvent(evt); } if (this.fireEvent) return this.fireEvent('on' + eventName); } $('foo').triggerEvent('mouseover'); 

我发现这个post有帮助… http://jehiah.cz/archive/firing-javascript-events-properly

它涵盖了在Firefox和IE中触发事件的方法。

 function fireEvent(element,event){ if (document.createEventObject){ // dispatch for IE var evt = document.createEventObject(); return element.fireEvent('on'+event,evt) } else{ // dispatch for firefox + others var evt = document.createEvent("HTMLEvents"); evt.initEvent(event, true, true ); // event type,bubbling,cancelable return !element.dispatchEvent(evt); } } 

这里的答案适用于“正常”事件,即由用户代理定义的事件,但对于自定义事件,则应使用原型的“激发”方法。 例如

 $('something').observe('my:custom', function() { alert('Custom'); }); . . $('something').fire('my:custom'); // This will cause the alert to display