19

当我查看 Rails 3 jquery-ujs 代码时,我注意到它绑定到自定义 JavaScript 事件(submit.rails、click.rails 等)。有谁知道这些自定义“.rails”事件在哪里定义?我只是想更好地理解 Rails 3 中的 UJS 东西是如何工作的,这样我就可以更有效地使用它......

4

1 回答 1

20

这些是命名空间事件。它们没有定义;click.rails与 相同click,但因为它的命名空间是rails,所以您可以取消绑定或触发特定于 Rails 的事件处理程序,而无需调用click元素上的所有事件。

例如,假设您有一些元素<div class='foo' data-remote='true'>、 和 rails.js 绑定

$("*[data-remote='true']").bind("click.rails", function() { ... })

在您的代码中,您还拥有:

$(".foo").click(function() { ... });

现在,Rails 可能希望在某个时候调用该远程处理程序,但如果它只是调用$(this).click(),那么它将调用项目上的所有单击处理程序,包括您的自定义处理程序,这可能会产生不希望的行为。相反,它可以调用$(this).trigger('click.rails'),并且只会运行它定义的点击处理程序。

于 2010-12-31T21:54:09.110 回答