2016-10-04 7 views
-2

Ich schreibe ein jQuery Plugin mit Parametern, aber ich kann nicht zwei Parameter einstellen.Parameter .replace() zweimal jQuery Plugin funktioniert nicht

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

In diesem Beispiel habe ich zwei Funktionen, eine a-aaa und die andere b-bbb und c-ccc Wechsel ändern, würde ich beide fonction aktivieren zu können, wie genannt aaa und bbbccc. Wenn ich true auf die Funktionen setze, scheint nur das letzte zu funktionieren. Ich muss einen deaktivieren, um den anderen zu aktivieren und umgekehrt.

Antwort

0

Der letzte Aufruf an html überschreibt den vorherigen Aufruf html und wie Sie nur auf dem ursprünglichen HTML ersetzen verlieren Sie die prevoius Ersatz usw.

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

Es sollte beachtet werden, dass Ihre Approach würde alle externen Event-Handler und alle Daten, die von jQuery in Bezug auf die Elemente gespeichert wurden, entfernen und es wird nicht mit verschachtelten Elementen funktionieren, die alle dem übergebenen Selektor usw. entsprechen.

Verwandte Themen