2012-12-19 10 views
7

ページのidnameの属性を変更しようとしています。私が使用しているコードはこれです:正規表現.find()、結果なし

id="launch_pad_image_slide_2" 

...しかし、それは動作しません:

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

仮定が全体id内部を拾う必要があり.find機能です。

これで5時間、燃え尽きました。提案?基本的にフィールドが削除されるたびに、jQueryはそれらをループし、ダブルスを避けるためにid/nameというアトリビュートを適切に付けなければなりません。

+1

あなたの問題を解決しますが、ために必要があります掲載している何@VisioN増分属性を使用する将来の参照は、あなたが今経験したような問題につながるため、決して洗練されたソリューションではありません。代わりに、同じクラスまたは名前を持つ要素を使用して、DOMまたは配列のいずれかを使用してそれらをトラバースします。 –

+0

@RoryMcCrossanあなたの弓はどこですか? :) – VisioN

+0

@VisioN冬のバッシュの帽子をチェックしてください:D –

答えて

10

jQueryセレクタは正規表現構文をサポートしていません。ただし、Attribute Starts With Selectorを使用することがあります。

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

もう一つの方法は、filterに要素です:

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

はこれを試してみてください:

$('img').each(function(){ 
      if ($(this).attr('id').indexOf("launch_pad_image_slide_") >= 0) 
       $(this).attr('id',Math.random()); 
    }); 
関連する問題