2016-10-04 52 views
-2

我正在寫一個帶參數的jQuery插件,但我無法設置兩個參數。參數.replace()兩次jQuery插件不起作用

jsfiddle

(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(); 

在這個例子中,我兩個功能,一個改變aaaa和其他改變bbbbcccc,我希望能夠使雙方fonction稱爲aaabbbccc。如果我將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存儲的與元素相關的任何數據,並且它將不會與嵌套元素一起使用,所有匹配傳入選擇器等。