2010-10-21 114 views
4

讓我們說,我有一些輸入,這樣的ID:CSS和應用樣式所有控件與特定的ID

ctl139_ctl00_txtValue 
ctl140_ctl00_txtValue 
ctl141_ctl00_txtValue 
..... 
xxxxxx_ctl00_txtValue 

如何使用CSS,採用同樣的風格這些輸入(其中ID遵循模式:xxxx_ctl00_txtValue)

我試圖CSS3爲Minkiele suggessted但我已經做了以下內容:

[id*="_ctl00_txtValue"]{ /* RULES */ } 

那麼就應該申請樣式其中id包含我的字符串的所有元素。它在Chrome中工作,但不在IE8中,但msdn告訴它應該工作。爲什麼它不起作用?

+0

我不能這是由ReportingServices生成的html。我只能在Report.aspx文件 – 2010-10-21 07:36:50

回答

12

你可以使用CSS3選擇兩端$=,但我不知道有多少瀏覽器如何實現此功能。

input[id$="_ctl00_txtValue"]{ 
    /* RULES */ 
} 

如果你可以改變輸入的標記,我建議一類添加到這個元素,這對於造型的目的是簡單。

CSS3 Selectors

更新

Quirksmode有此選擇類型測試頁。看起來唯一不支持此功能的瀏覽器是(意外驚喜)IE 5.5和6

+0

中爲CSS3選擇器添加一些CSS。它的真棒,我不知道! – 2010-10-21 07:49:20

+0

我試過了:[id * =「_ ctl00_txtValue」] { /* RULES */ }它在Chrome中工作,但不在IE8中,但我檢查了msdn,它應該可以工作 – 2010-10-21 07:53:58

+0

我需要添加什麼來改變DOC類型,以便不使用Quirksmode – 2010-10-21 08:04:15

2

事實上,你無法控制生成的HTML使得它很難。

如果您還沒有adversed到jQuery和一些輕微的DOM開銷,這將工作:

獲取容器的適用於所有的項目,讓我們說,他們在一個div。儘可能保持這個選擇器儘可能的緊湊,因爲它是「鬆散的」,處理的元素越多,因此開銷越大。

var pattern = '_ctl00_txtValue'; 
$('#somecontainer input').each(function() { 
    if ($(this).attr("id").indexOf(pattern) > 0) { 
     // Apply CSS using jQuery, e.g: 
     $(this).css("color","red"); 
    } 
}); 

基本上你通過一個給定的容器內的DOM元素循環,檢查是否ID中包含你想要的圖案,那麼如果是這樣,你的應用CSS。

這應該可以工作,但正如我所說的,根據HTML的結構而定,存在一些DOM遍歷開銷。