使用jQuery创建/触发事件

时间:2012-01-30 11:33:20

标签: jquery events firefox-addon

我目前使用以下代码从我的Firefox附加组件中触发事件。

    var hiddenArea = document.getElementById("section_help");
    if (hiddenArea) {
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        hiddenArea.dispatchEvent(evt);
    }

我尝试使用

实现与jQuery相同的功能
$("#section_help").trigger("click");

但它不起作用。 jQuery不会触发原始代码嵌入的事件。

我的错在哪里?

1 个答案:

答案 0 :(得分:1)

jQuery documentation提及以下内容:

  

虽然.trigger()模拟事件激活,但完成了   合成事件对象,它不能完美复制一个   自然发生的事件。

它们的含义并不是很清楚,所以我不得不查看源代码。显然,jQuery并没有真正创建一个本机事件对象。它只会触发自己的事件处理程序(通过jQuery添加的事件处理程序)以及它在onfoo属性中可以找到的任何事件处理程序。通过addEventListener()添加的事件处理程序将不会被触发。不会触发与事件相关的本机操作(但jQuery似乎正在处理一些特殊情况)。

总结:更好地坚持使用旧的创建事件的方式。它可能更冗长,但它符合您的期望。

相关问题