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

Bry*_*yan 19 ujs ruby-on-rails-3

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

Chr*_*ald 20

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

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

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

在您的代码中,您还有:

$(".foo").click(function() { ... });
Run Code Online (Sandbox Code Playgroud)

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