Ruby on rails 3 Rails 3自定义JavaScript事件在哪里定义?

Ruby on rails 3 Rails 3自定义JavaScript事件在哪里定义?,ruby-on-rails-3,ujs,Ruby On Rails 3,Ujs,当我浏览Rails3jQueryUJS代码时,我注意到它绑定到定制JavaScript事件(submit.Rails、click.Rails等)。有人知道这些自定义“.rails”事件是在哪里定义的吗?我只是想更好地理解Rails 3中的UJS是如何工作的,以便更有效地使用它…这些都是。他们没有定义click.rails与click相同,但由于它与rails同名,因此可以解除绑定或触发特定于rails的事件处理程序,而无需调用元素上的所有click事件 例如,假设您有一些元素,,以及rails.

当我浏览Rails3jQueryUJS代码时,我注意到它绑定到定制JavaScript事件(submit.Rails、click.Rails等)。有人知道这些自定义“.rails”事件是在哪里定义的吗?我只是想更好地理解Rails 3中的UJS是如何工作的,以便更有效地使用它…

这些都是。他们没有定义
click.rails
click
相同,但由于它与
rails
同名,因此可以解除绑定或触发特定于rails的事件处理程序,而无需调用元素上的所有
click
事件

例如,假设您有一些元素,
,以及rails.js绑定

$("*[data-remote='true']").bind("click.rails", function() { ... })
在代码中,您还具有:

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

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

Bryan,请停止对消息签名-这违反了stackoverflow策略。谢谢哎呀,对不起!将执行(或不再执行:)。谢谢你告诉我。太好了。。。指出它们是名称空间事件有助于显著地澄清问题。谢谢你,克里斯!好的,但是等等。。。那么“*.rails”事件在哪里触发?我在jQueryUJS中没有看到它们……它们是由常规事件以及任何.rails事件触发的。只有当您只想使用.rails处理程序做一些特殊的事情时(比如只解除绑定rails处理程序或在不触发常规处理程序的情况下触发它们),名称空间才起作用。看见