这似乎是一个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',处理程序)中,字符串click是事件类型,字符串名称是命名空间。 命名空间允许我们解除或触发某种类型的事件而不影响其他事件。 有关更多信息,请参阅.unbind()的讨论。

链接地址: http://www.djcxy.com/p/97009.html

上一篇: This appears to be a class on a Javascript event. What is it?

下一篇: Aurelia binding for button callback function