Object [object Object]没有使用Rails和jQuery资产管道的方法

时间:2013-06-27 03:17:32

标签: jquery ruby-on-rails ruby-on-rails-3.2 asset-pipeline

我的jQuery函数出错了:

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

我在 vendor / assets / javascripts jquery.timepicker.js,使用此library

在我的 app / assets / javascripts / application.js 我有这个

//= require jquery.timepicker

引入了jquery文件。我甚至可以看到它使用chrome浏览器加载到我的检查元素中。

在我正在编写函数的其他文件中,我有这个

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" />

我应该做错什么来应对这个错误?

2 个答案:

答案 0 :(得分:0)

显然我的jquery上有冲突,

在我的一个coffeescript文件中,我有这样的事情......

jQuery ->
  #more code
  $(".time_avail").timepicker ->

但是当我把它更改为:

jQuery - &gt;   #more code

$.noConflic()
  jQuery(document).ready ($) ->
  $(".time_avail").timepicker ->

它有效......不确定这是否正确,但我终于能够看到点击输入字段的时间

答案 1 :(得分:0)

当我想为jQuery添加一个新方法时,我遇到了同样的问题,并使用了以下内容(取自andrewliu自己的答案):

application.js.coffee:

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方法包装在noConflict()中。虽然,我不知道为什么这是必要的。也许其他人可以解释。