2013-02-06 34 views
0

找不到这些未捕获的类型错误?我只是试图用一个简单的jQuery插件柜台...其他插件在我的网站,做工精细: -/为什么我在尝试初始化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需要不冲突模式?任何帮助将不胜感激:)

+1

,请不要使用大写在您的文章锁定 - 它只是让我们不太愿意回答你的问题(我编出来)。 –

+0

你是否在代码中使用'noConflict'? '.counter'似乎依赖于使用'$'作为jQuery。你可以更新插件的代码来使用jQuery吗? –

+0

*拍自己的手腕*对不起! – DigitalMediaGuy

回答

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 ($) { 

您同时使用jQuerymootools都使用$变量访问核心引擎。既然你已经包含了mootools库和jQuery第二,jQuery覆盖了$变量,但任何调用jQuery.noConflict()都会恢复初始值。

在你的情况k2.noConflict.js文件调用var $K2 = jQuery.noConflict();它取代的$原来的值,它是在你的情况mootools

既然你叫jQuery.noConflict()$变量将指向MooTools的,因此,如果您要访问的jQuery,你需要使用变量jQuery$K2

编写插件的方式,一般是

(function($){ 
    $.fn.x=function(){ 
     ..... 
    }; 
})(jQuery); 
+0

谢谢......我将$改为了jQuery,我初始化插件。这是你的意思吗?它仍然给我的错误 – DigitalMediaGuy

+0

好吧...甜...让我试试 – DigitalMediaGuy

+0

是的,'定义(jQuery)' –

0

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

尝试将 $.noConflict(); 就在你初始化你的插件之前?

+0

我只是试过这样,并得到了相同的错误:$ .noConflict(); \t \t \t \t \t $('。main_counter')。counter({}); – DigitalMediaGuy

相关问题