无法弄清楚这些未捕获的类型错误?我只是想使用一个简单的jQuery计数器插件...我网站上的其他插件工作正常: - /
错误:
Uncaught TypeError: Cannot set property 'counter' of undefined
Uncaught TypeError: Object [object Object] has no method 'counter'
在我的页面上,我有这样的跨度:
<span class="counter counter-analog2" data-direction="up" data-format="23:59:59.9" data-stop="00:00:10.0" data-interval="100">0:00.0</span>
我已经加入了jQuery插件&amp; css文件ABOVE我在哪里初始化它们:
<script type="text/javascript" src="/templates/ja_wall/js/jquery.counter.js"></script>
<link rel="stylesheet" href="/templates/ja_wall/css/jquery.counter-analog2.css" type="text/css" media="all" />
然后在我的jQuery文档准备好了(代码中的插件比插件中的更低)我初始化计数器插件,如下所示:
$('.main_counter').counter({});
我完全陷入困境......也许它与jQuery需要无冲突模式有关?任何帮助将不胜感激:)
答案 0 :(得分:1)
看起来还有另一个库覆盖了$
变量。
counter
插件实现似乎遇到了一些问题。在jQuery中
插件开发通常的做法是不直接使用$
变量,而是使用jQuery
变量并使用自执行匿名函数来注入它。
在您的情况下,一个解决方案可以是更改jquery.counter.js中的以下行
!(function (context, definition) {
if (typeof define == 'function' && typeof define.amd == 'object') define(['jquery'], definition);
else definition(context['$']);
}(this, function ($) {
到
!(function (context, definition) {
if (typeof define == 'function' && typeof define.amd == 'object') define(['jquery'], definition);
else definition(jQuery);
}(this, function ($) {
您同时使用jQuery
和mootools
都使用$
变量来访问核心引擎。由于您首先包含了mootools库而jQuery第二,因此jQuery会覆盖$
变量,但对jQuery.noConflict()的任何调用都将恢复初始值。
在您的情况下,k2.noConflict.js
文件正在调用var $K2 = jQuery.noConflict();
,它会替换$
的原始值mootools
。
由于您已调用jQuery.noConflict()
$
变量将指向mootools,因此如果您想要访问jQuery,则需要使用变量jQuery
或$K2
。< / p>
编写插件的正常方法是
(function($){
$.fn.x=function(){
.....
};
})(jQuery);
答案 1 :(得分:0)
看起来插件没有正确初始化。
尝试推杆
$.noConflict();
在你开始你的插件之前?