jQuery 事件命名空间可以包含破折号吗?
Posted
技术标签:
【中文标题】jQuery 事件命名空间可以包含破折号吗?【英文标题】:Can jQuery event namespaces contain dashes? 【发布时间】:2015-05-28 22:40:46 【问题描述】:jQuery 事件命名空间可以包含破折号(连字符)吗?我有很长的命名空间,我想用破折号分隔它们,这可能吗?我在http://api.jquery.com/unbind/ 上没有找到任何文档。你知道它记录在哪里吗?
代码是这样的:
var close_menu_event_element = $('selector');
var event = 'click.our-top-menu'; // Can be also 'click.our-compose-menu'
if (close_menu_event_element.length > 0)
close_menu_event_element.unbind(event);
if (typeof(func) === "function")
close_menu_event_element.bind(event, func);
更新:在 Chrome 41.0.2272.101 m 中绑定和取消绑定可以使用带有破折号的命名空间,但我想知道它是否可以在任何带有 jQuery 的浏览器中使用?我们使用的是 jQuery 2.1.1。
【问题讨论】:
请分享一些相关代码并解释一下。 我同意@MillieSmith 的观点 - 看看是最好的学习方式。也就是说,是的,他们可以。 我想在尝试之前在文档中查看它,浏览器和版本之间可能存在差异,我想知道它是否适用于所有浏览器和版本。 @米莉史密斯 @Uri 首先要做的是看看它是否有效。是时候回来询问它是否兼容跨浏览器了。 @JLRishe 感谢您的评论,请查看我更新的问题。 【参考方案1】:我想知道它是否适用于任何带有 jQuery 的浏览器
是的,它可以在所有主流浏览器中正常运行。 jQuery 为解析命名空间所做的所有操作都是通过 .
字符拆分选择器字符串。像这样的:
namespaces = ( tmp[2] || "" ).split( "." ).sort();
这里没什么特别的,split 方法在任何地方都可以使用,如果你想在命名空间子字符串中使用-
或@
。
这是最好的文档:source code。
【讨论】:
谢谢!顺便说一句,你知道他们为什么在api.jquery.com/unbind 中使用“myEvents”作为命名空间吗? jQuery 以后有没有可能不支持带破折号的命名空间? 在将源代码称为“最佳”文档时感到畏缩。仅当它是“唯一”文档时。看我的回答。【参考方案2】:不确定 jQuery 是否对此有最终决定权,但根据.on()
的 jQuery 文档,答案是 否。
命名空间应仅包含大写/小写字母和数字。
【讨论】:
以上是关于jQuery 事件命名空间可以包含破折号吗?的主要内容,如果未能解决你的问题,请参考以下文章