为什么coffeescript/jquery函数不会触发通过ajax加载的DOM元素,以及如何修复?

And*_*vey 1 ajax jquery ruby-on-rails coffeescript

在Rails 3.2应用程序中,我有一个coffeescript函数,可以在单击链接时切换css类.

#coffeescript
jQuery ->
  $(".toggle-link").click ->
    $(this).toggleClass "selected"

#view
<%= link_to "toggle", my_path, class: "toggle-link" %>
Run Code Online (Sandbox Code Playgroud)

这很好用.

但是如果我将链接移动到ajaxified部分,例如用于分页,则jquery切换停止工作.

为什么是这样?

它怎么能修复?

Den*_*ret 5

您需要使用on来获取动态元素:

jQuery ->
  $(document).on 'click', ".toggle-link", ->
    $(this).toggleClass "selected"
Run Code Online (Sandbox Code Playgroud)

(更换document页面容器以提高效率)