找不到jQuery .on函数

时间:2012-08-27 09:02:41

标签: ruby-on-rails-3 jquery

我在Firebug控制台中收到错误:

TypeError: $.on is not a function
$.on('ajax:success', 'a[data-remote]', function(xhr, data, status) {

这是我的modal.js文件的第8行 - 见下文。我使用的是gist.github.com/1456815中的代码。

我可以在application.js中找到相关的jQuery v1.7.2缩小代码:

f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object")

jQuery然后我的modal.js代码被资产管道加载,所以我不明白错误,当我加载索引页面时,即在我点击链接之前在Firebug中显示错误。

版本:Ruby 1.9.3,gem 1.8.24,Rails 3.2.1,Rake 0.9.2.2

我的application.js来源:

//= require jquery
//= require jquery-ui
//= require jquery.dataTables
//= require TableTools
//= require ZeroClipboard
//= require datatable_highways
//= require datatable_localities
//= require datatable_neighbours
//= require_tree .
//= require modals

根据RailCasts#205,我已将rail.js下载到/ public / javascripts并重命名为jquery.rails.js。坦率地说,我不理解这一点,并没有明确包含在资产管道中。 (关于如何在论坛中使用rails.js似乎存在混淆)。

jquery.js位于/ vendor / assets / javascripts。

Modal.js.coffee:

# This file should be "required" into your `application.js` via the Asset Pipeline.

$ ->
  $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

由于 约翰

1 个答案:

答案 0 :(得分:0)

做这样的事情:

$('#modal .close').on 'click', ->
    # code

或者,更好的是,使用您的代码:

$modal_close.on 'click', ->
    # code