0

我在 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

谢谢约翰

4

1 回答 1

0

改为执行以下操作:

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

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

$modal_close.on 'click', ->
    # code
于 2012-08-27T09:07:27.167 回答