Dispatching CustomEvent with dot in name do not trigger jQuery.on() event listener(调度名称中带有点的CustomEvent不会触发jQuery.on()事件侦听器)
问题描述
我使用了jQuery版本2.2.4,并尝试捕获事件--没有成功。有什么方法可以解决这个问题吗?
此代码起作用:
window.addEventListener('test.namespace', e => console.log('CustomEvent with namespace captured by vanilla'));
这不起作用:
$(window).on('test.namespace', e => console.log('CustomEvent with namespace captured by jQuery'));
const event = new CustomEvent('test.namespace', {
bubbles: true,
detail: 123
});
window.dispatchEvent(event);
http://jsbin.com/tecupavuji/edit?html,js,console
推荐答案
"普通"DOM事件系统没有名称空间的概念。window.addEventListener('test.namespace', ...)
将直接侦听名为test.namespace
的事件,这是您使用new CustomEvent('test.namespace', ...)
创建的事件。
Event namespaces是jQuery中的一个概念:
事件名称可以由简化删除或触发事件的事件命名空间限定。例如,"click.myPlugin.simple"
为这个特定的Click事件定义了myPlugin和Simple名称空间。可以使用.off("click.myPlugin")
或.off("click.simple")
删除通过该字符串附加的单击事件处理程序,而不会干扰附加到元素的其他单击处理程序。
这里重要的是命名空间不是事件名称的一部分。这就是new CustomEvent('test.namespace', ...)
不起作用,但new CustomEvent('test', ...)
起作用的原因。
如果要触发特定命名空间的事件,则必须使用jQuery:
$(window).trigger('test.namespace', {detail: 123});
$(window).on('test.namespace', e => console.log('CustomEvent with namespace captured by jQuery'));
$(window).trigger('test.namespace', {detail: 123});
<script src="aHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMi4xLjEvanF1ZXJ5Lm1pbi5qcw=="></script>
这篇关于调度名称中带有点的CustomEvent不会触发jQuery.on()事件侦听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:调度名称中带有点的CustomEvent不会触发jQuery.on()事
- addEventListener 在 IE 11 中不起作用 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Fetch API 如何获取响应体? 2022-01-01
- 400或500级别的HTTP响应 2022-01-01