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 のコードを使用しています。

関連する jQuery v1.7.2 縮小コードが application.js にあります。

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

ありがとうジョン

4

1 に答える 1

0

代わりに次のようにします。

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

または、さらに良いことに、コードを使用するには:

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