JQuery如何创建它的自定义事件,我可以在Javascript中重新创建?
-
02-01-2020 - |
题
我正在寻找使用与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系统,并且只使用浏览器事件系统作为它的输入。因此,自定义事件通常根本不必与浏览器交谈。
不隶属于 StackOverflow