我的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" />
我应该做错什么来应对这个错误?
答案 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()
中。虽然,我不知道为什么这是必要的。也许其他人可以解释。