有没有人知道在Prototype中触发事件的方法,就像使用jQuery的触发器函数一样?
我使用observe方法绑定了一个事件监听器,但我也希望能够以编程方式触发事件.
提前致谢
event.simulate.js
满足您的需求.
我已经好几次使用它,它就像一个魅力.它允许您手动触发本机事件,例如单击或悬停,如下所示:
$('foo').simulate('click');
关于这一点的好处是所有附加的事件处理程序仍将被执行,就像您自己单击该元素一样.
对于自定义事件,您可以使用标准原型方法Event.fire()
.
我不认为Prototype内置了一个,但你可以使用它(没有经过测试,但至少应该让你朝着正确的方向):
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');
我发现这篇文章很有帮助... 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); } }