2011-06-30 13 views
5

私はjQuery検証を使用しています。以下のためには、現在有効である場合、バリデータは、これらをCSSセレクタ - CSSで 'for'を選択するには?

作成されます。

<label class="error" for="username" generated="true"> 

すべてのラベルが同じクラスを持っているとして=エラーが、私はCSSで「の」に基づいてこの正確なものを選択することができますか?

私はこれをjQueryで整理する方法を知っていますが、常に最もクリーンで純粋な方法を探しています。 どのような提案も大変ありがとうございます。 (CSS2)を使用して、ピート

+0

.error[for=username] { } 

あなたはユニークなラベル要素、wouldentを生産している場合jqの各ラベルに固有のidを付けるのが適切です選択肢は何ですか? – John

+0

@john - 'inputs'は一意のIDを持っていますが、jQuery Validatorはそれらをコピーしません - 次の要素を見つけてクラスに追加するよりも、エラー) - これは私の質問のポイントではなかった。私は純粋なCSSソリューションを探しています。 – Iladarsda

+0

@jAndy - これは社内のプロジェクトです - Chromeと私だけです。 – Iladarsda

答えて

12

attribute selector

.error[for="username"] 

これはIE8 +とすべての最新ブラウザで動作します。


IE7の属性セレクタは、バギーです:as explained here、あなたが使用する必要がありますforhtmlForと一致します。倍の長それがために、必要に応じて上で私の答えを作るために、おかげでIE7

.error[for="username"], .error[htmlFor="username"] 

ので、あなたはIE7のサポートが必要な場合は、これを使用します。

+0

URL参照が何を言おうとしているかを理解しておいてください。 "for"はIE7を失敗させるキーワードですか? .error [foo = 'bar']のようなものを使用すると、期待どおり

と一致するでしょうか? –

+0

@Michael Edenfield:そうです。 – thirtydot

3

任意の属性は、CSSまたはjQueryで[]表記を使用して選択できます。 CSSは、HTMLだけでなくXMLに似た構文にも適用されます。構造が整形式である限り、どの属性が「有効」であるかはわかりません。

.error[for='username'] 
    { 
    } 

やCSSの

.error[for^='userprefix'] 
    { 
    } 
1

"で始まり" について:jQueryの

$('.error[for=username]') 
+0

jQuery 1.6には属性値に関する引用符が必要だと思います。 –