Где определены пользовательские события JavaScript в Rails 3? - PullRequest
18 голосов
/ 01 января 2011

Просматривая код Rails 3 jquery-ujs, я замечаю, что он привязывается к пользовательским событиям JavaScript (submit.rails, click.rails и т. Д.).Кто-нибудь знает, где определены эти пользовательские события .rails?Я просто пытаюсь лучше понять, как работает UJS в Rails 3, чтобы я мог использовать его более эффективно ...

1 Ответ

19 голосов
/ 01 января 2011

Это события пространства имен .Там нет определения для них;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'), и будет запущен только определенный им обработчик кликов.

...