0

我的 jQuery 函数之一出现错误:

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

我有jquery.timepicker.jsvendor /assets/javascripts,使用这个

在我的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" />

我做错了什么应该得到这个错误?

4

2 回答 2

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

于 2013-08-05T14:49:15.403 回答
0

显然我的jquery有冲突,

在我的一个咖啡脚本文件中,我有这样的事情......

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

但是当我把它改成这样时:

jQuery -> #更多代码

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

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

于 2013-06-30T03:29:58.303 回答