2011-06-30 50 views
5

我正在使用jQuery驗證。CSS選擇器 - 如何在CSS中選擇'for'?

當現在是有效的,驗證正在創建這些:

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

由於所有的標籤已經得到了相同的類=錯誤我可以用CSS選擇「爲」基於這個確切嗎?

我知道如何用jQuery進行分類 - 但總是尋找最乾淨,最純粹的方式。 任何建議非常感謝。

皮特

+0

如果你是生產獨特的標籤元素,wouldent適用於爲jq的每個標籤添加一些唯一的ID用戶選擇? – John

+0

@john - 'inputs'確實具有唯一的ID - 但jQuery Validator不會複製它們 - 我可以通過jQUery調用它們(具有ID的輸入),比找到下一個元素並向其添加類(另一個用類標記的獨特類錯誤) - 但這不是我的問題的重點。我正在尋找純粹的CSS解決方案。 – Iladarsda

+0

@jAndy - 這是一個室內項目 - 只有Chrome和只有我。 – Iladarsda

回答

12

使用(CSS2)attribute selector

.error[for="username"] 

這將在IE8 +以及所有現代瀏覽器。


IE7的屬性選擇是越野車:as explained here,匹配for必須使用htmlFor

所以,如果你需要IE7支持,使用此:

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

謝謝IE7,讓我的答案了,只要它需要兩倍。

+0

只要確保我明白該網址引用試圖說什麼 - 這是事實「for」是一個使IE7失敗的關鍵字,是否正確?如果您使用.error [foo ='bar']之類的東西,它會按預期匹配

? –

+0

@邁克爾伊登菲爾德:沒錯。 – thirtydot

3

任何屬性都可以使用[]符號通過CSS或jQuery進行選擇。 CSS適用於任何類似XML的語法,而不僅僅是HTML - 只要結構是格式良好的,它就不知道(或關心)哪些屬性是「有效的」。

.error[for='username'] 
    { 
    } 

或爲 「打頭」

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

在CSS:

.error[for=username] { 
} 

在jQuery的

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

我相信jQuery 1.6需要引用屬性值。 –