1

我最近发现看起来像这样的代码

$('.mybuttons').unbind('click.myclick');
$('.mybuttons').bind('click.myclick', function(){
   // do something
});

它响应单击事件执行// do something。我最感兴趣的是它不会干扰其他点击事件。它根本没有解除它们的绑定。

我不知道事件“click.myclick”可以用作命名的点击事件。

我查看了 api.jquery.com,但在 bind 下没有提到这一点。有人可以启发我或指向描述此内容的在线文档吗?我进行了一些测试,如果将.其换成另一个字符,它不再起作用,那么这些是否意味着 myclick 是事件单击的属性?

4

1 回答 1

9

这称为命名空间事件。通过对事件进行命名空间,您可以选择性地仅取消绑定使用任何事件或特定事件的命名空间绑定的处理程序。

http://api.jquery.com/on/#event-names

$(element).on("click.mynamespace", handler);
$(element).on("change.mynamespace", handler);
$(element).on("mouseenter.mynamespace mouseleave.mynamespace", handler);
$(element).off(".mynamespace"); // unbind all the above events at once, without affecting others

这通常用于插件中,以使事件和清理更易于管理。

于 2013-04-24T19:43:51.527 回答