为什么我不能在删除命名空间事件处理程序后添加它?

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

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

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

我想删除该处理程序并在同一名称空间中添加一个不同的处理程序。这是我所做的:

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

有效。

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

$('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