2016-10-04 9 views
-2

jQueryプラグインをパラメータで作成していますが、2つのパラメータを設定することはできません。私は2つの機能、aaaからaを変える1とcccからbbbcbを変更する他、私は両方のfonctionを有効にできるようにしたいと思いました。この例では パラメータ.replace()を2回jQueryプラグインが動作しません

(function($) { 
    $.fn.ototypo = function(options) { 
     var defauts = { 
      'aaa': true, // ON/OFF ponctuation 
      'bbbccc': true // ON/OFF parenthese 
     }; 
     var parametres = $.extend(defauts, options); 

     return this.each(function() { 
      var aaa = $(this).html().replace(/a/g, "aaa"); 
      var bbbccc = $(this).html().replace(/b/g, "bbb").replace(/c/g, "ccc"); 

      if (parametres.aaa) { 
       $(this).html(aaa) 
      } 

      if (parametres.bbbccc) { 
       $(this).html(bbbccc) 
      } 
     }); 
    }; 
})(jQuery); 

$('p').ototypo(); 

jsfiddle

aaaと呼ばれますおよび bbbccc。私が trueを設定すると、最後のものだけが動作するように見えます。私はもう一方を有効にするには無効にする必要があり、逆も有効にするには無効にする必要があります。

答えて

0

htmlへの最後の呼び出しがhtmlの前回の呼び出しを上書きし、あなただけのオリジナルのHTMLに置き換えるとしてあなたがprevoius交換を失うなど

(function($) { 
 
    $.fn.ototypo = function(options) { 
 

 
     var defauts = { 
 
      'aaa': true, // ON/OFF ponctuation 
 
      'bbbccc': true // ON/OFF parenthese 
 
     }; 
 

 
     var parametres = $.extend(defauts, options); 
 

 
     return this.each(function() { 
 
     
 
      var html = $(this).html(); 
 
      
 
      if (parametres.aaa) { 
 
       html = html.replace(/a/g, "aaa"); 
 
      } 
 
      
 
      if (parametres.bbbccc) { 
 
       html = html.replace(/b/g, "bbb").replace(/c/g, "ccc"); 
 
      } 
 
      
 
      $(this).html(html) 
 
     }); 
 
    }; 
 
})(jQuery); 
 

 
$('p').ototypo();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>abcdefghijklmnopqrstuvwxyz</p>

それはあなたのことに留意すべきですアプローチは、すべての外部イベントハンドラと要素に関連するjQueryによって格納されたデータをすべて削除し、渡されたセレクタなどと一致するネストされた要素では機能しません。

関連する問題