3

为什么我必须重新加载页面才能使点击回调正常工作?

使用 Rails 4.0.0.rc2 我想单击 table-row/table-td 而不是标准链接。table-row 有一个 css-class,并且当单击该行时,coffee-script 应该加载正确的 url。

下面显示的代码第一次运行良好并重定向到正确的目标。然后,当我单击菜单(使用 turbolink 处理)以显示原始表格时,除非我重新加载表格,否则对任何表格行的点击都不起作用。

我的haml模板看起来像这样

....
%tr{class: 'clickable-row', id: 'row-id-1'}
  %td Some text
  %td more text
%tr{class: 'clickable-row', id: 'row-id-2'}
  %td ...
  %td ...

咖啡脚本:

jQuery ->
  $('.clickable-row td').click ->
    target_id = $(this).parent().attr('id').replace /row-id-/,''
    document.location = "/controller_xy/#{target_id}/edit"
4

2 回答 2

4

虽然,这不是“为什么”问题的答案,但至少是一种解决方法。

工作的咖啡脚本如下所示:

jQuery ->

  $(document).on( 'click', '.clickable-row td', ->
    target_id = $(this).parent().attr('id').replace /row-id-/, ''
    document.location = "/controller_xy/#{target_id)}/edit"
  )
于 2013-06-16T20:26:47.317 回答
1

这里还有另一个更简单的解决方案。

当您使用自 Rails 4 以来默认的 turbolinks 时,还包括jquery.turbolinks gem

说明很简单。

  1. 在您的 Gemfile 添加:gem 'jquery-turbolinks'
  2. 在您的 JavaScript 清单中(默认:app/assets/javascripts/application.js.coffee): 在 jquery 之后立即
    需要jquery.turbolinks。 在您的脚本之后需要turbolinks

例子:

#= require jquery
#= require jquery.turbolinks
#= require jquery_ujs

# ... your other scripts here ...

#= require turbolinks
于 2014-03-21T12:13:04.750 回答