在没有命名空间的jquery中触发事件

Posted

技术标签:

【中文标题】在没有命名空间的jquery中触发事件【英文标题】:Trigger event in jquery without a namespace 【发布时间】:2012-11-21 09:35:58 【问题描述】:

使用当前版本的 jQuery (1.8.3),您仍然可以使用以下代码(显示带有和不带有命名空间的单击):

$("span")
    .on("click", function(e)  console.log('click without a namespace'); )
    .on("click.namespace", function(e)  console.log('click with a namespace'); )
    .trigger("click!"); // "click without a namespace"

JSFiddle

但是,这似乎在 1.9 中被删除了。 jQuery 的新版本(测试版)有没有办法复制这个特性?还是我必须像这样创建一个自定义事件:

$("span")
    .on("click", function(e)  $(this).trigger("customevent"); )
    .on("click.namespace", function(e)  console.log('click with a namespace'); )
    .on("customevent", function(e)  console.log('"click" without a namespace'); )
    .trigger("customevent");

JSFiddle

【问题讨论】:

您能否更具体地说明什么不起作用? @Vega from jquery 1.9 我将无法使用click! 仅触发click 上的事件(查看测试链接,您将看到只有一个“测试”记录),我发布的第二个代码将“修复”该问题,但这意味着我必须再绑定一个事件。 你的两个样本并不完全相同......如果你让它们都一样,它们的表现都是一样的。你想说什么/做什么?在这一点上,您似乎在要求它做它正在做的事情。 第二个例子是我如何使用 1.9 来做到这一点(或者只是在 jsfiddle 上使用 jQuery edge),我的主要问题是是否有另一种方法来保留或多或少的旧代码并仍然保留这个未记录的功能。 jsfiddle.net/oceog/RczDZ/5 检查这个小提琴并告诉一键后的预期结果 【参考方案1】:

您可以使用

调用它

.trigger("click.$")

我们发现这是因为正则表达式

http://jsfiddle.net/oceog/RczDZ/10/

【讨论】:

+1, Great Hack :) 你能解释一下这种行为的原因吗?你的来源? namespace 部分是正则表达式,所以如果你不想触发 click to not namespaced only 事件,你必须想办法在这里设置空的命名空间字符串。 有没有办法触发每个点击处理程序,除了一个带有命名空间确认的点击处理程序? ('click.confirm') 我不太了解正则表达式.. @Mamut ***.com/questions/406230/…

以上是关于在没有命名空间的jquery中触发事件的主要内容,如果未能解决你的问题,请参考以下文章

命名空间jquery

jQuery 事件命名空间可以包含破折号吗?

jquery的事件命名空间详解

浅谈jquery事件命名空间

有没有办法只解除非命名空间事件的绑定?

小tips:jquery中带命名空间的事件(namespaced events)