我正在关注@coreyward的示例,将对象编辑表单放在Rails的模态对话框窗口中,即outlined in this answer和updated for rails 3.1 in this gist。
我正在使用Rails 3.2.8和jQuery-Rails 2.1.3(jQuery 1.8.2正在应用程序中加载)。然而,这个来自要点的coffeescript引起了第7行(评论后面)标题中的错误。
$ ->
$modal = $('#modal')
$modal_close = $modal.find('.close')
$modal_container = $('#modal-container')
# Handle modal links with the data-remote attribute
$.on 'ajax:success', 'a[data-remote]', (xhr, data, status) ->
$modal
.html(data)
.prepend($modal_close)
.css('top', $(window).scrollTop() + 40)
.show()
$modal_container.show();
$.on 'click', '#modal .close', ->
$modal_container.hide()
$modal.hide()
false
对this question的评论让我觉得这个jQuery版本问题可能是原因,这就是为什么我检查了我的jQuery版本,但显然这个jQuery并不像解决这个问题那样古老。我还验证了在此脚本之前加载了jQuery(或者至少,它在加载顺序中位于此脚本之上)。
我将上面的coffeescript放入a fiddle which demonstrates the problem(有关错误,请参阅控制台)。 (这也让我觉得这不是我的设置的问题。)我会尝试不同版本的jQuery,看看他们是否解决了它,但也许代码只是不稳定?我不太清楚coffeescript看到其他人可能会明白的错误。
答案 0 :(得分:3)
用$.on
替换$(document).on
会删除错误......我需要在DOM元素上调用on
方法,从来没有看到它在jQuery根目录上调用之前的对象......