admin管理员组

文章数量:1388859

I'm doing an Ajax request with CoffeeScript and then rendering a partial from my controller, but then after that the partial has been rendered it can't use the Javascript I had previously.

Example:

At the end my action of my home_controller I have:

respond_to do |format|
   format.html { render partial: 'frame' }
end

In my home.js.coffee:

$('#plouf').click -> 
  alert('test')

Then in my partial _frame.html.erb (in the home folder of the views folder)

<span id="plouf">test<span>

If I click on this span, nothing happens...

<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

But if I add this line in my partial it works, but I know it's ugly since I already did it in my application.html.erb

Am I missing something, or is it normal that partial can't use any previous Javascript?

I'm doing an Ajax request with CoffeeScript and then rendering a partial from my controller, but then after that the partial has been rendered it can't use the Javascript I had previously.

Example:

At the end my action of my home_controller I have:

respond_to do |format|
   format.html { render partial: 'frame' }
end

In my home.js.coffee:

$('#plouf').click -> 
  alert('test')

Then in my partial _frame.html.erb (in the home folder of the views folder)

<span id="plouf">test<span>

If I click on this span, nothing happens...

<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

But if I add this line in my partial it works, but I know it's ugly since I already did it in my application.html.erb

Am I missing something, or is it normal that partial can't use any previous Javascript?

Share Improve this question edited Apr 18, 2014 at 8:04 Romain asked Mar 26, 2014 at 23:56 RomainRomain 1,5111 gold badge10 silver badges13 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 9

Partials are piled into the view before javascript is run by the browser.

What you need is

$(document).on 'click', '#plouf', ->
  alert('test')

This binds the event to the document, so when turbolinks or ajax reloads the HTML, your event handler is still active.

本文标签: jqueryRails 4 Partial can39t use javascript after being rendered (with ajax)Stack Overflow