使用 jQuery 创建/触发事件
我当前使用以下代码从我的 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 不会触发原始代码嵌入的事件。
我的错在哪里?
I currently use the following code to trigger an event from my Firefox Add-On.
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);
}
I tried to achieve the same with jQuery using
$("#section_help").trigger("click");
but it doesn't work.
jQuery doesn't trigger the event that was embedded by the original code.
Where is my fault?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
jQuery 文档提到了以下内容:
不太清楚他们的意思,所以我不得不查看源代码。显然,jQuery 并没有真正创建本机事件对象。它只会触发自己的事件处理程序(通过 jQuery 添加的事件处理程序)以及它在
onfoo
属性中可以找到的任何内容。通过addEventListener()
添加的事件处理程序不会被触发。与该事件关联的本机操作不会被触发(但是 jQuery 似乎正在处理一些特殊情况)。总结一下:最好坚持您创建活动的旧方式。它可能更冗长,但它符合您的期望。
The jQuery documentation mentions the following:
It's not really clear what they mean by that so I had to look at the source code. Apparently, jQuery doesn't really create a native event object. It will merely trigger its own event handlers (the ones added via jQuery) and whatever it can find in
onfoo
properties. Event handlers added viaaddEventListener()
won't be triggered. Native actions associated with the event won't be triggered (jQuery seems to be handling a few special cases however).To sum up: better stick with your old way of creating events. It might be more verbose but it does what you expect.