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