我正在寻找使用与JQuery相同的方法在Javascript中创建事件-有谁知道JQuery是如何做到的?

我的推理是,使用原始Javascript这样的:

var myEvent = new CustomEvent("userLogin", eventProperties);

...实际上并不适用于Android本机浏览器,因为它不支持像Chrome和其他浏览器那样的DOM级别3。

但是,JQuery 是否 在Android的股票浏览器上工作,并简单地使用:

$.event.trigger('MyEvent');

我的问题是,这背后的代码是什么?我试图通过JQuery的去找到它 源代码, ,但不能让我的头周围!

有帮助吗?

解决方案

这里最基本的是:当你用jQuery挂接一个事件处理程序时,jQuery 不会 直接将该处理程序添加到DOM元素中。相反,jQuery在DOM元素上挂接了自己的处理程序(如果它还没有一个)。当事件发生时,jQuery查看事件的jQuery注册处理程序列表并按顺序触发它们。(这有几个原因;最初,它主要围绕IE内存泄漏和IE以一个顺序触发处理程序的事实,而其他人则以不同的顺序触发处理程序;所以jQuery接管并确保了订单。)

(你也许可以看到我要去哪里。..)

所以当你使用 trigger, ,jQuery将合成事件发送到DOM元素,但它没有 依靠 在那个合成事件中起作用;它直接调用您通过jQuery注册的处理程序。事实上,它设置了一个标志,以便它知道它已经完成了,所以如果浏览器 是否 将事件发送到jQuery的处理程序,jQuery知道忽略它(因为它已经完成了它的工作)。

你可以从第4,464行开始看到这一点 当前未压缩的jQuery文件.

所以基本上jQuery的构建自己的pub/sub系统,并且只使用浏览器事件系统作为它的输入。因此,自定义事件通常根本不必与浏览器交谈。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top