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

时间:2010-12-31 21:40:12

标签: ruby-on-rails-3 ujs

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

1 个答案:

答案 0 :(得分:19)

这些是namespaced events。他们没有定义; click.railsclick相同,但由于它是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'),并且只运行它定义的点击处理程序。