当我查看Rails 3 jquery-ujs代码时,我注意到它绑定到自定义JavaScript事件(submit.rails,click.rails等)。有谁知道这些自定义'.rails'事件的定义在哪里?我只是想更好地了解Rails 3中UJS的工作原理,以便我可以更有效地使用它...
答案 0 :(得分:19)
这些是namespaced events。他们没有定义; 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')
,并且只运行它定义的点击处理程序。