2011-01-05 18 views
3

Ich versuche Zeile von jquery zu schreiben, die eine Eingabe findet, die eine Klasse hat, die mit "a \ d" beginnt (der Buchstabe a und eine Zahl) und die Nummer durch eine andere ersetzen Nummer.jQuery: replace() Klassenname/regex

Dies ist, was ich versucht habe, merkt jemand, warum das nicht funktionieren würde?

Bitte beachten Sie: Dies ist eine Zeile von vielen, ich habe diese Zeile extrahiert, weil es dort ist, wo ich Probleme habe.

+0

Ich glaube nicht, dass die Wähler ‚-Attribut mit beginnt‘ mit regulären Ausdrücken arbeitet. Die Dokumentation besagt, dass es "Wählt Elemente, die das angegebene Attribut mit einem Wert genau mit einer angegebenen Zeichenfolge beginnen." –

Antwort

10

Sie müssen es tun mehr wie folgt aus:

$('form').find('input[class^="a"]').attr('class', function(i,cls) { 
    if(/a\d/.test(cls)) { 
     return cls.replace(/a\d+/,'a22'); 
    } 
}); 

Wenn .attr() mit dem class (oder jedes Attribut) zu setzen, können Sie es eine Funktion übergeben, die zwei Parameter. Der i ist der aktuelle Index in der Iteration. Der cls ist der aktuelle Wert von class.

Der Wert return wird zur Aktualisierung der class verwendet. Wenn nichts zurückgegeben wird, wird nichts geändert.

+1

Brilliant. Vielen Dank! Das funktioniert perfekt. Ich werde diese Methode oft benutzen! – superUntitled

+0

@superUntitled: Gern geschehen. – user113716

0

Versuchen Sie, diese

var regExp = /(a\d+)(.*)?/; 
$('form').find('input[class^="a"]').each(
    function() 
    { 
     var el = this; 
     var className = el.replace(regExp, "a22$2"); 
     el.className = className; 
    } 
);