2012-12-19 13 views
7

Ich versuche, id und name Attribute auf einer Seite zu ändern. Der Code ich verwende, ist dies:Regex mit .find(), keine Ergebnisse

var img = new RegExp('id*="launch_pad_image_slide_\d"', g) ; 
$('.slider-data').each(function(){ 
    $(this).find(img).attr('id', 'random stuff'); 
});    

Die Annahme ist die .find Funktion innerhalb des gesamten id abholen sollte:

id="launch_pad_image_slide_2" 

... aber es funktioniert nicht.

5 Stunden darauf, und ausgebrannt. Vorschläge? Grundsätzlich muss jQuery jedes Mal, wenn ein Feld gelöscht wird, diese durchlaufen und ihre id/name Attribute richtig nummerieren, um Doppelungen zu vermeiden.

+1

Was @VisioN hat, sollte Ihr Problem beheben geschrieben, sondern für Zukünftige Referenz mit inkrementellen Attributen ist nie eine elegante Lösung, da es zu Problemen führt, die Sie gerade erlebt haben. Verwenden Sie stattdessen Elemente mit derselben Klasse oder demselben Namen und durchlaufen Sie sie entweder über das DOM oder als Array. –

+0

@RoryMcCrossan Wo ist dein Bogen? :) – VisioN

+0

@VisioN schau dir die Hüte im Winter Bash an: D –

Antwort

10

jQuery-Selektor unterstützt keine regex Syntax. Sie können jedoch Attribute Starts With Selector verwenden:

$(this).find("[id^='launch_pad_image_slide_']").prop("id", "random stuff"); 

Eine weitere Möglichkeit, filter ist die Elemente:

$(this).find("[id]").filter(function() { 
    return /^launch_pad_image_slide_\d$/.test(this.id); 
}).prop("id", "random stuff"); 
1

Versuchen Sie folgendes:

$('img').each(function(){ 
      if ($(this).attr('id').indexOf("launch_pad_image_slide_") >= 0) 
       $(this).attr('id',Math.random()); 
    }); 
Verwandte Themen