最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - Rails 4: Partial can't use javascript after being rendered (with ajax) - Stack Overflow

programmeradmin3浏览0评论

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.

发布评论

评论列表(0)

  1. 暂无评论