当前位置:  开发笔记 > 编程语言 > 正文

使用Prototype触发事件

如何解决《使用Prototype触发事件》经验,为你挑选了3个好方法。

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

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

提前致谢



1> Aron Rotteve..:

event.simulate.js 满足您的需求.

我已经好几次使用它,它就像一个魅力.它允许您手动触发本机事件,例如单击或悬停,如下所示:

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

关于这一点的好处是所有附加的事件处理程序仍将被执行,就像您自己单击该元素一样.

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


对于我们这些有插件许可问题的人来说这没有用 - 我最终调用了原生元素上的函数,因为Prototype非常糟糕.

2> Greg..:

我不认为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');



3> 小智..:

我发现这篇文章很有帮助... 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);
    }
}

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有