JQueryまたはJavaScriptを正規表現で使用して、類似のIDを持つ複数の要素を選択できますか?
次の段落があります。
<p id="item5_2"> A </p>
<p id="item9_5"> B </p>
<p id="item14_2"> C </p>
item
で始まり2
で終わるidを持つ段落の内容を変更したい。
次のjQueryを使用しました。
$("#item[\d]*2").html("D");
しかし、それは機能しません。どうすれば機能しますか?
はい、できます。 属性で始まる セレクタと 属性で終わる セレクタを組み合わせることができます
_$('[id^="item"][id$="2"]').html("D");
_
[〜#〜] fiddle [〜#〜](フィドルでjQueryを有効にする必要があります)
ただし、間に正規表現を使用して数字を一致させることはできません。そのためには、 filter()
が必要です。
_$('[id^="item"]').filter(function() {
return this.id.match(/item\d+_2/);
}).html("D");
_
最適な方法は、次のjQueryセレクターを使用することです
^= is starts with
$= is ends with
= is exactly equal
!= is not equal
*= is contains
あなたの場合:
var $items = $('[id^="item"][id$="2"]');
これが動作です JS FIDDLE
HTML:
<p id="item5_2"> A </p>
<p id="item9_5"> B </p>
<p id="item14_2"> C </p>
<input type="button" value="Get element ids starting with 'item' and ending with '2'" onclick="get_ids()">
JS:
get_ids = function(){
$('[id^="item"][id$="2"]').each(function() {
alert($(this).attr('id'));
});
}
属性セレクターを組み合わせることができます: fiddle
$("[id^='item'][id$='2']").html("D");
これを試して
<p id="item5_2"> A </p>
<p id="item9_5"> B </p>
<p id="item14_2"> C </p>
そして...
$('[id^="item"][id$="2"]')
他のアクションを実行する場合は、次のコードを使用できます。
$('[id^="item"]').each(function(){
if(this.id.slice(-1) == 2){
//Do something
$(this).html('D');
}
});