2012-12-31 26 views
2

我有一個類的名稱是動態生成的頁面。該班有「寫作模式:tb-rl;」屬性,但我想在IE瀏覽器中添加垂直文本所需的其他屬性。使用jQuery來查找類和添加屬性

鏈接的jsfiddle例:http://jsfiddle.net/VheJd/1/

HTML全文:

<html> 
<head> 
<title>test page</title> 
<style type="text/css"> 
    .dynamic_name { 
     writing-mode: tb-rl; 
     /*Would like to find the class by the writing-mode property then add the properties below:*/ 
     /*-webkit-transform: rotate(90deg); 
     -moz-transform: rotate(90deg); 
     -o-transform: rotate(90deg);*/ 
    } 
</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     //find classes with writing-mode: tb-rl and add -moz-transform etc... properties 
    }); 
</script> 
</head> 
<body> 
<table> 
    <tr> 
     <td class="dynamic_name">text 1</td> 
     <td class="dynamic_name">text 2</td> 
    </tr> 
    <tr> 
     <td>hello</td> 
     <td>world</td> 
    </tr> 
</table> 
</body> 
</html> 
+1

動態名稱是否有任何可以解析的可靠格式? like'dynamic_class_name_VARIABLE_PART' – prodigitalson

+0

似乎沒有CSS的選擇器。但是,您可以遍歷* all *元素,然後篩選您的CSS。請參閱此問題和答案http://stackoverflow.com/q/1220834/1741542 –

+0

這是生成類名稱的SQL Reporting Services。我從頁面中拉出的類名是:.Acf3e9901792e4e94a1cec069d6f1ea70122,所以我不認爲它甚至會部分可預測。 – Tom

回答

0

你可以使用getComputedStyle()檢查特定的CSS屬性的值通過JS網頁上的所有元素,但是這將是非常緩慢。

最好找到一種方法來確定動態類的名稱,然後通過這個類名選擇需要的元素。例如,如果所有這些動態類有一定的前綴,你可以選擇這樣的元素這種方式(前綴是foo-在這個例子中):

var elems = document.querySelectorAll('[class ^= "foo-"]'); 

如果類的名字總是包含數字串(而且沒有其他元素與然後可以使用複雜的屬性子字符串選擇器:

TD[class*="1"], TD[class*="2"], TD[class*="3"], TD[class*="4"], TD[class*="5"], 
TD[class*="6"], TD[class*="7"], TD[class*="8"], TD[class*="9"], TD[class*="0"] 
+0

感謝您的建議,但我不習慣使用通用選擇方法。我想確保我所針對的元素具有書寫模式屬性。 – Tom

+0

所以實現這個的唯一方法是使用'getComputedStyle()'(或jQuery的等價物,如果需要的話),正如我在我的答案的第一段中所建議的那樣。 –