2011-09-28 27 views
24

したがって、私はバックエンドチームからのビルドではよく考えられていなかったことに取り組んでいます。それは私にdivsでいっぱいの文書を残す。要素が複数のクラスを持つ場合、jqueryは特定のクラスで要素を検索します

私がしていることは、クリックする必要がある要素からロールバックして、親コンテナを取得して、class="alert-box warn"class="alert-box dead"などを持つ親の中の要素を見つけることです。基本的に、私は複数各要素のクラスセレクタalert-boxを見つけようとすると、正しく動作していないようです。 warn,が死んでいる、「罰金」などがあると仮定しています。

alert-box*またはワイルドカードの概念に相当するものは、どのようにして見つけることができますか?

+2

HTMLマークアップのサンプルを投稿できますか? –

答えて

52

あなたはこの

$(".alert-box.warn, .alert-box.dead"); 

のようにセレクタを組み合わせることができますまたはあなたがしたい場合は、ワイルドカードはattribute-contains selector

$("[class*='alert-box']"); 

注意を使用します。上記のセレクタを使用する際に好ましく使用すると、要素の種類やタグを知っているだろう。タグを知ることで、セレクタをより効率的にすることができます。

$("div.alert-box.warn, div.alert-box.dead"); 
$("div[class*='alert-box']"); 
+0

私は後者のものよりも最初のセレクターをお勧めします。 – Bojangles

+1

また、「contains」アラートボックスではなく、そのエレメントのクラスがalert-boxで始まることを確認したい場合は、* = for^=を代用することもできます。 –

+0

jsfiddle https://jsfiddle.net/frxyqzw3/2/というクラスのアイデアを投稿しました – shadi

2

要素には任意の数のclassNamesを設定できますが、1つのclass属性しか持てません。最初のものだけがjQueryによって読み込まれます。

投稿したコードを使用すると、$(".alert-box.warn")は動作しますが、$(".alert-box.dead")は動作しません。

+0

jQueryだけでなく、ブラウザで最初の 'class =" "'属性が読み込まれます。 – Bojangles

+0

それは、私がこの答えで遭遇することを意味していたポイントです。十分に明確ではありませんか? –

+0

jQueryは、ブラウザのHTMLパーサーがそれらを無視するため、実際には 'class =" "' esを実際には参照しないことを明確にしたかっただけです。 – Bojangles

-1

あなたがそうのように複数のクラスを持つ要素を選択することができますhttp://api.jquery.com/hasClass/

<div id="mydiv" class="foo bar"></div> 

$('#mydiv').hasClass('foo') //returns ture 
+4

いいえ、彼はそうではありません - 彼は持っている要素がクラスを持っているかどうかを見ないために、彼らが持っているクラスに基づいて要素を選択したいです。 – Bojangles

3
var divs = $("div[class*='alert-box']"); 
7

を探しています:

$("element.firstClass.anotherClass"); 

は単にことなく、第1の1の上に次の授業、 をチェーンスペース(スペースは "children of"を意味する)。

関連する問題