使用名称中的点调度 CustomEvent 不会触发 jQuery.on() 事件侦听器

     2023-02-23     295

关键词:

【中文标题】使用名称中的点调度 CustomEvent 不会触发 jQuery.on() 事件侦听器【英文标题】:Dispatching CustomEvent with dot in name do not trigger jQuery.on() event listener 【发布时间】:2016-10-03 17:35:06 【问题描述】:

我使用 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

【问题讨论】:

【参考方案1】:

前面的答案并没有真正解决如何为来自第三方(非 jQuery)库并且在事件名称中有一个点的自定义事件注册处理程序的问题。假设事件是foo.bar

简短的回答是,jQuery 没有办法为此类事件安装处理程序。

$(window).on( 'foo.bar' ) 将为事件 foo 安装一个处理程序。

似乎没有任何方法可以转义名称中的点或以其他方式强制 jQuery 为名为 foo.bar 的事件安装处理程序。

【讨论】:

【参考方案2】:

“正常”的 DOM 事件系统没有命名空间的概念。 window.addEventListener('test.namespace', ...) 实际上会监听名为 test.namespace 的事件,这就是您使用 new CustomEvent('test.namespace', ...) 创建的事件。

Event namespaces是jQuery中的一个概念:

事件名称可由事件命名空间限定,以简化删除或触发事件。例如,"click.myPlugin.simple" 为这个特定的点击事件定义了 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="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

JavaScript 符号不会阻止对象中的名称冲突

...我已经开始研究JavaScript中的符号,并开始在我的对象中使用它们来帮助解决名称冲突,但是在使用它们时我仍然可以覆盖属性吗?我很难理解符号在JavaScript中的意义。他们被谈论了很多,人们说他们很聪明,因为 查看详情

JSON调用后调度组不会阻塞

...ell之前让我的JSON调用返回,但是作为swift的新手,我无法使用调度队列来阻止调用....谁能告诉我如何让它停止在下面发布的代码中的group.wait()行。overridefunctableView(_tableView:U 查看详情

JavaScript 中的正则表达式模式用于测试名称中的点/连字符

】JavaScript中的正则表达式模式用于测试名称中的点/连字符【英文标题】:RegexpatterninJavaScripttotestfordots/hyphensinnames【发布时间】:2019-05-2805:57:43【问题描述】:必需的正则表达式像只允许最小1个点和最大3个点的字母。允许可选... 查看详情

useState 从父级传递给子级并在子级中使用不会触发子级的重新渲染

】useState从父级传递给子级并在子级中使用不会触发子级的重新渲染【英文标题】:useStatepassedfromparenttochildandusedinchilddoesn\'ttriggerthere-renderofthechild【发布时间】:2021-03-0805:37:40【问题描述】:所以,我猜想当useState更新时,父组... 查看详情

React 功能组件状态变化不会触发子组件重新读取其 props

...我们知道,从v16.8开始,功能组件具有某种“状态”。它使用useEffect来“setState”来声明变量p 查看详情

如果 CustomEvent 在元素上触发,则取消“单击”DOM 事件

】如果CustomEvent在元素上触发,则取消“单击”DOM事件【英文标题】:Cancel\'Click\'DOMeventifCustomEventfiresonelement【发布时间】:2019-05-2102:14:48【问题描述】:我正在使用Cordova构建一个应用程序,并且与许多应用程序一样,我正在尝... 查看详情

为啥滑动手势不会触发下一个视图的切换?

】为啥滑动手势不会触发下一个视图的切换?【英文标题】:Whyisn\'ttheswipegesturetriggeringaseguetothenextview?为什么滑动手势不会触发下一个视图的切换?【发布时间】:2014-03-0221:14:30【问题描述】:我已将滑动手势识别器添加到情节... 查看详情

$emit 不会触发子事件

】$emit不会触发子事件【英文标题】:$emitdoesn\'ttriggerchildevents【发布时间】:2017-03-3022:56:17【问题描述】:对于VueJS2.0项目,我在父组件上有以下内容<template><child></child><button@click="$emit(\'childEvent)"></button><... 查看详情

k8s中的默认调度器

...与待考察节点匹配2.Volume相关:NoDiskConflict待调度pod声明使用的Volume是否与待考察node上的已有pod声明挂载的Volume有冲突(AWSEBS类型的Volume,是不允许被两个Pod同时使用的)MaxPDVolumeCountPredicatenode上某种类型的持久化Volume是不是已... 查看详情

Redux 状态在下一个 js 调度后不会改变

...:2019-02-2403:56:11【问题描述】:我是下一个js的新手,我使用redux-next-wrapper!问题是我想分派令牌访问,但是当我在getInitialProps中执行此操作时,商店在页面呈现后不会更新!我尝试使用componentDidMount,它可以工作,但是 查看详情

sqlplus 无法假脱机名称以 Windows 上的点开头的文件

...indows【发布时间】:2016-05-2614:07:30【问题描述】:我正在使用一些涉及使用sqlplus假脱机文件的Windows脚本。我不断收到错误:SP2-0606:CannotcreateSPOOLfile"Z:/regression/RBC/.fla 查看详情

环境变量名称不会被气流 DAG 中的值替换 [重复]

】环境变量名称不会被气流DAG中的值替换[重复]【英文标题】:EnvironmentvariablesnamesarenotreplacedwithvaluesinairflowDAG[duplicate]【发布时间】:2019-10-3113:10:19【问题描述】:我正在尝试在气流dag中执行SQL代码。我能做到的。我必须将环境... 查看详情

组件的调度自定义事件没有父级

】组件的调度自定义事件没有父级【英文标题】:dispatchcustomeventforcomponentdoesnthaveparent【发布时间】:2013-05-1519:06:40【问题描述】:我有一个添加元素MyComponentcomp1的组g1和一个添加子g1的UIComponentc1和一个自定义事件customEvent1意味... 查看详情

Redux 状态不会随着动作调度而更新

...:我已经浏览了我可以找到的所有文档和示例项目,用于使用redux和react-router构建一个react应用程序,但我似乎无法弄清楚如何让我的redux状态在我更新时调度动作。正如您在此屏幕截图中看到的,动作正在正确调度,但我的store 查看详情

如何使用 cv2.fisheye.undistortPoints 将扭曲空间中的点转换为未扭曲空间中的点?

】如何使用cv2.fisheye.undistortPoints将扭曲空间中的点转换为未扭曲空间中的点?【英文标题】:HowdoIusecv2.fisheye.undistortPointstoconvertapointindistortedspacetooneinundistortedspace?【发布时间】:2021-08-1817:35:01【问题描述】:我正在尝试使用openc... 查看详情

VB6 中的进程监视器/调度程序

...行的进程,但我不知道如何在VB6中获取进程信息。我可以使用tasklist实用程序查看我需要的一些内容,但我真的不知道如何创建进程(如果可能,指定进程或应用程序名称)以及从操作系统获取有关 查看详情

quartz使用一(代码片段)

最近有用到quartz,附上代码使用,以免下次忘记<备注:代码也是摘抄某博主的>:  packagecn.com.test;importorg.quartz.*;importorg.quartz.impl.StdSchedulerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.scheduling.qua... 查看详情

UIBarButtonItem 在视图更改之前不会被禁用

...00:26:53【问题描述】:我有一个UINavigationController并且正在使用我的一个视图控制器中的工具栏。我有几个UIBarButtonItems。在不同的点上,我禁用了工具栏中的某些按钮,使用_btnEdit.enabled=NO之 查看详情