2012-05-03 21 views
0

ユーザーが入力するときにテキストエリアのテキストをカウントダウンするJQueryプラグインでいくつかの作業をしています。何らかの理由で、私の期待通りにプラグインが動作していません。jQueryプラグインのデバッグ - 1.4で動作し、1.7で動作しないようです。

私は合理的なjavascriptの開発者ですが、以前はプラグインをビルドしていません。私はこの1つをデバッグしようとしているとそれが動作していない理由を把握しています。

このプラグインは、jQuery 1.3.xおよび1.4.xでテストされていると記述しています。私は1.7.1を使用する必要があります。

alert()さんのプラグインのこの部分をトレースすることができました - 私は処理がcertianポイントに行くのが分かりますが、進行していないようです。あるいは、私はまだjQueryプラグインをデバッグする方法を学んでいるので、誤読しているかもしれません。

コードスニペットでは、どこから作業するのか、どこでできないのかをコメントに追加しました。alert

$.fn.NobleCount = function(c_obj, options) { 
    var c_settings; 
    var mc_passed = false; 

    // if c_obj is not specified, then nothing to do here 
    if (typeof c_obj == 'string') { 

     // check for new & valid options 
     c_settings = $.extend({}, $.fn.NobleCount.settings, options); 

     // was max_chars passed via options parameter? 
     if (typeof options != 'undefined') { 
      mc_passed = ((typeof options.max_chars == 'number') ? true : false); 
     } 


        // THIS ALWAYS FIRES 
        console.log("I am here"); 

     // process all provided objects 
     this.each(function(){ 

          // THIS NEVER FIRES 
          console.log("I DON'T SEEM TO EVER EXECUTE"); 

      var $this = $(this); 

      // attach events to c_obj 
      attach_nobility($this, c_obj, c_settings, mc_passed); 
     }); 
    } 

    return this; 
}; 

attach_nobilityのコードは実行されることはありません。

jquery 1.4からjquery 1.7に変更された点がありますか?

編集:ここではoriginal NobleCount jquery pluginページ

EDITへのリンクです:私はこのようなプラグインを呼んでいる:

(function() { 

    $('#how_to_improve_input').NobleCount('#how_to_improve_count'); 

}).call(this); 
+0

注:これを添付しているjqueryセレクタが有効なセレクタであることは既に確認済みです。 –

+0

これはconsole.log/dirのときは何ですか? – epascarello

+0

console.log(this); '[]'を返す。私はそれがたくさん説明すると思います。 1.4以降、 'this''がプラグインのためにどのように変更されましたか? –

答えて

1

私は問題はプラグインではないと思います。私はあなたが提供したコードと同じパターンで基本的なパターンを作成しました。私は、単純なセレクタ

jQuery("div").foo("asdf"); 

でそれを実行する場合は、各ループになるので

(function($){ 
    $.fn.foo = function (c_obj, options) { 
     var c_settings; 
     var mc_passed = false; 
     if (typeof c_obj == 'string') { 
      c_settings = $.extend({}, {a:"xxxx"}, options); 
      console.log("aaaa"); 
      this.each(
       function(){ 
        console.log("I DON'T SEEM TO EVER EXECUTE"); 
        var $this = $(this); 
       } 
      ); 
     } 
     return this; 
    }; 
})(jQuery); 

私はログメッセージのトンを取得します。私は

jQuery("sfsdfdiv").foo("asdf"); 

でそれを行う場合

それはまだ要素がないにもかかわらず、機能になります。コンソールに「aaaa」と表示されています。したがって、プラグインではなくセレクタを見る必要があります。

関連する問題