这似乎是Javascript事件的一个类。 它是什么?

我刚刚遇到了一些看起来像这样的jQuery:

$('.add-row').live('click.add', function() { // do something } 

这似乎与‘click.add’事件绑定。 我自己使用自定义事件并认为它们很棒,但在我们的代码库上执行git grep并没有显示触发click.add的自定义事件的任何地方,并且在任何情况下,这种行为都是由正常点击触发的。 我也没有在HTML中的任何地方看到.add类。

我不认为你可以有关于Javascript事件的课程。 知道这个奇怪的语法是什么吗?

这是一个名为命名空间的事件 。 在此示例中, add是命名空间。 它实际上是一个事件类,因此您可以对它们进行分类并相应地处理/触发它们。 例如,您可以编写一个插件并为每个事件处理程序提供myPlugin的命名空间,以便您可以在不删除用户的其他事件处理程序的情况下取消绑定它们:

 $('a').bind('click.myPlugin', function(){ /*...*/ }); // bind with the myPlugin namespace $('a').bind('click'), function() { /* ... */ }); // bind without a namespace $('a').unbind('.myPlugin'); // only removes the first function 

这也适用于trigger

请参阅http://api.jquery.com/event.namespace/ ,特别是http://api.jquery.com/bind/ :

如果eventType字符串包含句点(。)字符,则该事件是命名空间。 句点字符将事件与其名称空间分开。 例如,在调用.bind(’click.name’,handler)中,字符串单击是事件类型,字符串名称是名称空间。 命名空间允许我们取消绑定或触发某种类型的事件而不影响其他事件。 有关更多信息,请参阅.unbind()的讨论。