0

jQuery 関数の 1 つでエラーが発生します。

Uncaught TypeError: Object [object Object] has no method 'timepicker' 

このライブラリを使用してjquery.timepicker.jsvendor/assets/javascriptsにあります

私のapp/assets/javascripts/application.jsには、これがあります

//= require jquery.timepicker

これにより、jquery ファイルが取り込まれます。クロム ブラウザーを使用して、検査要素に読み込まれていることも確認できます。

関数を書いている他のファイルには、これがあります

jQuery ->
  $(".time_avail").timepicker ->

これにより、ブラウザに次のように表示されます。

(function() {
  jQuery(function() {
    return $(".time_avail").timepicker(function() {});
  });

}).call(this);

私のビューファイルにはクラスの入力フィールドがあります

<input class="time_avail time-picker" id="hour_open_time" name="hour[open_time]" size="30" type="text" />

このエラーに値するために私は何を間違っていますか?

4

2 に答える 2

0

jQueryに新しいメソッドを追加したいときに同じ問題が発生し、以下を使用しました(andrewliu自身の回答から引用):

アプリケーション.js.コーヒー:

jQuery ->
  $.noConflict() ->
    $.fn.isOnScreen = ->
      win = $(window)
      viewport =
        top: win.scrollTop()
        left: win.scrollLeft()

      viewport.right = viewport.left + win.width()
      viewport.bottom = viewport.top + win.height()
      bounds = @offset()
      bounds.right = bounds.left + @outerWidth()
      bounds.bottom = bounds.top + @outerHeight()
      not (viewport.right < bounds.left or viewport.left > bounds.right or viewport.bottom < bounds.top or viewport.top > bounds.bottom)

したがって、基本的に重要なのは、追加の jQuery メソッドを .xml 内にラップすることnoConflict()です。とはいえ、なぜこれが必要なのかわかりません。他の誰かが説明できるかもしれません。

于 2013-08-05T14:49:15.403 に答える