jQueryセレクターのワイルドカード


668

ワイルドカードを使用して、「jander」で始まるすべての要素のIDを取得しようとしています。私が試した$('#jander*')$('#jander%')しかし、それは動作しません。..

要素のクラスを使用して解決できることはわかっていますが、ワイルドカードを使用することもできますか?

<script type="text/javascript">

  var prueba = [];

  $('#jander').each(function () {
    prueba.push($(this).attr('id'));
  });

  alert(prueba);


});

</script>

<div id="jander1"></div>
<div id="jander2"></div>

2
これは、jQuery(正確にはSizzleエンジン)に関する質問です。
PeterÖrneholm11年

1
ただ注意:jQueryやSizzleはブラウザ機能を利用できるため、クラスを使用する方がはるかに高速です(ただし、最新のブラウザでは大きな違いはないはずです)。
Felix Kling


7
また、重要なのは$("[id*=jander]")、文字列janderを含むIDを持つすべての要素を選択することです。
Gabriel Ryan Nahmias

回答:


1280

「jander」で始まるすべての要素を取得するには、次を使用する必要があります。

$("[id^=jander]")

「ジャンダー」で終わるものを取得するには

$("[id$=jander]")

JQueryドキュメントも参照してください


22
ドキュメントはこの例を示しています:$('input[name^="news"]').val('news here!')
ブレンデン

5
コードは意図したとおりに機能します。二重引用符を付ける必要はありません。終了の引用符が抜ける可能性が高くなり、読みにくくなります。
nico

4
@nicoおもしろいことに、ドキュメントは属性で機能しid、技術的にはプロパティであると述べていますが、jqueryの最新リリース(つまり1.9)と、属性とプロパティへの最新の変更がどのように処理されるかで、線が少しぼやけていると思います2つに関しては、(少なくともいくつかの)プロパティの属性セレクターを使用できます。
johntrepreneur 2013年

選択したものの偶数を選択したい場合はどうすればよいですか。例:.col-lg-4:even div:nth-child(1)同じことをしたい場合は、現在持っています...何を書けばいいですか?"[class^=.col-lg-]:even"?(私はそれを動作させていないようです)
Luis Robles

私を驚かせたちょっとした動作-----これを "class $ = ..."と一緒に使用すると、個々のクラス名ではなく、アイテムのクラスリストが検索されます。したがって、検索されるクラスがそのアイテムの最後のクラスである場合にのみヒットします。Chrome以外はテストしていません。そして、欠陥がjQueryにあるのか、jQueryに対する私の期待にあるのかはわかりません。
Roger Krueger

115

タイトルはワイルドカードを示唆しているので、これも使用できます。

$(document).ready(function(){
  console.log($('[id*=ander]'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="jander1"></div>
<div id="jander2"></div>

これにより、指定された文字列がの任意の場所で選択されますid


39

まずはjQueryを試してください

セレクター、 '^ ='、例えば

[id^="jander"]

でも、クラスでこれをやってみませんか?


2
コンテキストを追加するために、私はDjangoを使用しているので同じソリューションを探しています。DjangoのModelFormクラスはモデルに基づいてIDを指示し、このようなグループ化を許可していないようです。つまり、HTMLは私の管理外です。
クリスチャンマン

これは、ASP.Net WebForms、特にラジオとチェックボックスリストを操作するときに役立ちます。
DavidScherer

35

使用できるクラス:

div[class^="jander"]

これを機能させることができず、無効な構文に関するメッセージが表示されました。
stian 2013

14

ワイルドカードの一致からID取得するには

$('[id^=pick_]').click(
  function(event) {

    // Do something with the id # here: 
    alert('Picked: '+ event.target.id.slice(5));

  }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pick_1">moo1</div>
<div id="pick_2">moo2</div>
<div id="pick_3">moo3</div>


2
「event.target.id」の代わりにこれも機能する可能性があります:$(this).attr( "id")
PJ Brunet

10

より複雑なid文字列がある場合、二重引用符は必須です。

たとえば、次のようなIDがある場合id="2.2"、それにアクセスする正しい方法は次のとおりです。$('input[id="2.2"]')

安全上の理由から、可能な限り二重引用符を使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.