为什么jQuery触发器方法不使用本机事件?

时间:2014-05-29 17:15:35

标签: javascript jquery dom

jQuery trigger仅适用于jQuery附加的侦听器,如果附加了侦听器,则无法工作(例如,使用prototype.js)。

但是,同时 - 如果你触发本机事件 - 它将适用于jQuery和其他库。

问题是 - 为什么jQuery不会生成开箱即用的本机事件而是使用自己的东西?

我只是好奇,想知道为什么会这样。

P.S。

原生事件的示例代码

var trigger = function(el, eventName)
{
    if (document.createEvent)
    {
        var evt = document.createEvent('HTMLEvents');
        evt.initEvent(eventName, true, true);

        return el.dispatchEvent(evt);
    }

    if (el.fireEvent)
        return el.fireEvent('on' + eventName);
}

1 个答案:

答案 0 :(得分:0)

在早期版本的IE中(在attachEvent / addEventListener之前),您只能为每个事件分配一个处理程序/侦听器。 jQuery所做的是为事件分配一个处理程序,它调用一个回调列表(你指定的处理程序)。这允许跨不同浏览器的多个处理程序的一致行为。