0

无法弄清楚这些未捕获的类型错误?我只是想使用一个简单的 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 插件和 css 文件,我在其中初始化它们:

<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有关?任何帮助将不胜感激 :)

4

2 回答 2

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.

编写插件的正常方式是

(function($){
    $.fn.x=function(){
        ..... 
    };
})(jQuery);
于 2013-02-06T03:43:54.627 回答
0

看起来插件没有正确初始化。

尝试 $.noConflict(); 在你初始化你的插件之前把权利?

于 2013-02-06T03:37:03.500 回答