문제

I'm using the jQuery method "on" in a Rails app to attach an event on a form which doesn't always exist. It doesn't seem to be attaching an event handler when #myForm is appended to the document.

Here is UJS's suggested usage of on():

$("#myForm").on("ajax:complete", function(xhr, status) { ... }

Here is how I usually implement jQuery's on(), but this does not seem to work:

$("body").on("ajax:complete", "#myForm", function(xhr, status) {...}

Rails UJS wiki: https://github.com/rails/jquery-ujs/wiki/ajax

도움이 되었습니까?

해결책

UJS doesn't really have much to do with the on function. That's provided by jQuery, and it takes multiple forms. UJS simply fires the ajax:complete event so you can hook into it yourself.

The selector argument is optional, so both

$(...).on("ajax:complete", function(xhr, status) { ... }

and

$(...).on("ajax:complete", "form", function(xhr, status) { ... }

are valid uses, though they work somewhat differently.

다른 팁

Some useful links:

Event Delegation

Understanding delegation .on()

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

enter image description here

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top