为什么可以't我在删除一个带有名称空间的事件处理程序后再添加一个

Why can't I add a namespaced event handler after removing one?

本文关键字:一个 空间 有名称 事件处理 程序 添加 删除 为什么      更新时间:2023-09-26

在一个文件(我无法编辑)中,有一个添加了命名空间的事件:

$('p').on('ns.click',function(){
   // do stuff
});

我想删除那个处理程序,并在同一个命名空间中添加一个不同的处理程序。以下是我所做的:

$('p').off('ns.click')
      .on('ns.click',function(){
            // do different stuff
      });

这是不起作用的。

如果没有命名空间,这将按预期工作(仅对onoff使用"单击"):

$('p').off('click')
      .on('click',function(){
            // do different stuff
      });

此外,如果我添加一个具有不同命名空间的新处理程序,它将按预期工作:

$('p').off('ns.click')
      .on('xyz.click',function(){
            // do different stuff
      });

为什么我不能删除名称空间的处理程序,然后重新添加一个新的处理程序

http://api.jquery.com/on/名称空间设置在事件名称之后,而不是之前,因此它应该是click.ns