我在 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 中。
模态.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
谢谢约翰