2016-09-22 17 views
0

私は、アコーディオン用の基本プラグインを作成しました。私のコードは私のaccordion.jsファイルにあります。これはjQueryライブラリを含めた直後に含まれています。 accordion.jsファイルにこのコードのアコーディオンに問題はありません。jQueryプラグインに関する問題

(function($) { 
$.fn.accordion = function(options) { 
    var settings = $.extend({ 
     speed:300, 
    }, options); 
    return this.each(function() { 
     var $elm = $(this), 
      s = settings.speed; 
     $elm.on('click',function(e) { 
      $('.accordion-toggle').on('click', function(e){ 
       $elm.each(function() { 
        if(!$(e.target).is(this)) { 
         $($elm.attr('data-target')).slideUp(s); 
         $(this).removeClass('active'); 
        } 
       }); 
      }); 
      $($elm.attr('data-target')).slideToggle(s); 
      $elm.toggleClass('active'); 
      e.stopPropagation(); 
     }); 
    }); 
}}(jQuery)); $(".accordion-toggle").accordion(); 

私のページからスピードオプションでこれを開始すると、2回発生します。

問題はどこですか?

答えて

1

あなたのaccordion.jsファイルには$(".accordion-toggle").accordion();がありますので削除してみてください。

+0

はい、うまくいくことはわかっています。しかし、そのプラグイン - 私は通常のプラグインは、ファイル自体から開始されていることがわかりました。 – Smit

+1

クラスセレクタでプラグインを開始しています。通常は、データ属性を使用して、プラグイン自体からプラグインを開始します。私は、jqueryでプラグインを作成する方法について詳しく説明します。プラグインファイル自体のクラスセレクタでプラグインを起動するのは普通ではありません。 – Yalamber

+0

さて、プラグイン開発の例をもっと見ていきます。 https://learn.jquery.com/plugins/advanced-plugin-concepts/以外のリソースを参考にして、基礎を徹底的に学ぶことができますか?また、この場合何ができるのでしょうか? – Smit

関連する問題