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) { ... }

допустимы, хотя они работают несколько иначе.

Несколько полезных ссылок:

Делегация мероприятия

Понимание делегирования.on()

$(selector).on(event,childSelector,data,function,map)

введите описание изображения здесь

Другие вопросы по тегам