Подтвердить что ты не робот

Где определены определенные события JavaScript Rails 3?

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

4b9b3361

Ответ 1

Это события с именами. Там нет определения для них; click.rails совпадает с click, но из-за того, что он помещается в папку rails, вы можете отменить или вызвать обработчики событий, специфичных для Rails, без вызова всех событий click для элемента.

Например, предположим, что у вас есть какой-то элемент, <div class='foo' data-remote='true'> и rails.js binds

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

В вашем коде у вас также есть:

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

Теперь Rails может захотеть вызвать этот удаленный обработчик в какой-то момент, но если он просто вызвал $(this).click(), тогда он будет вызывать все обработчики кликов для элемента, включая ваш пользовательский, что может привести к нежелательному поведению. Вместо этого он может вызывать $(this).trigger('click.rails'), и только обработчик клика, который он определил, будет запущен.