jQuery“对象函数(e,t){return new v.fn.init(e,t,n)}没有方法'on'”

时间:2012-11-09 14:54:53

标签: jquery coffeescript ruby-on-rails-3.2

我正在关注@coreyward的示例,将对象编辑表单放在Rails的模态对话框窗口中,即outlined in this answerupdated 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看到其他人可能会明白的错误。

1 个答案:

答案 0 :(得分:3)

$.on替换$(document).on会删除错误......我需要在DOM元素上调用on方法,从来没有看到它在jQuery根目录上调用之前的对象......