Rails UJS "on" для обработки события ajax
Я использую метод jQuery "on" в приложении Rails, чтобы прикрепить событие к форме, которая не всегда существует. Кажется, он не прикрепляет обработчик события, когда к документу добавляется #myForm.
Вот предложенное UJS использование on()
:
$("#myForm").on("ajax:complete", function(xhr, status) { ... }
Вот как я обычно реализую JQuery on()
, но это не похоже на работу:
$("body").on("ajax:complete", "#myForm", function(xhr, status) {...}
Rails UJS wiki: https://github.com/rails/jquery-ujs/wiki/ajax
2 ответа
Решение
UJS на самом деле не имеет ничего общего с on
функция. Это обеспечивается jQuery и принимает несколько форм. UJS просто стреляет ajax:complete
событие, чтобы вы могли подключиться к нему самостоятельно.
selector
аргумент необязателен, поэтому оба
$(...).on("ajax:complete", function(xhr, status) { ... }
а также
$(...).on("ajax:complete", "form", function(xhr, status) { ... }
допустимы, хотя они работают несколько иначе.
Несколько полезных ссылок:
$(selector).on(event,childSelector,data,function,map)