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変数を使用し、自己実行型の無名関数を使用して変数を挿入するのが一般的な方法です。

あなたの場合、1つの解決策は、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

変数はmootoolsを指しているので、jQueryにアクセスする場合はjQuery.noConflict()、変数または$を使用する必要があります。jQuery$K2

プラグインを書く通常の方法は次のとおりです。

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

プラグインが正しく初期化されていないようです。

$.noConflict(); プラグインを初期化する直前に配置してみ ますか?

于 2013-02-06T03:37:03.500 に答える