目標是用jQuery pollyfill css3 nth-child僞類。所以我需要解析css規則,然後用jQuery重新應用它們,以便舊版瀏覽器不直接從css支持nth-child。所以我寫了一些代碼,但我很確定類似的應該已經存在,例如在github上。可能有人已經遇到過這樣的問題?這裏是我的代碼:是否有任何JavaScript庫用於解析jss中使用的css規則?
// if ie7 or ie8
if (!$.support.leadingWhitespace) {
var aStyleSheetList = document.styleSheets,
aRules = [],
current = '',
aSelectors = [];
for (var i = 0; i < aStyleSheetList.length; i++) {
aRules = aStyleSheetList[i].cssRules || aStyleSheetList[i].rules;
for (var j = 0; j < aRules.length; j++) {
current = aRules[j];
if (current.selectorText && current.selectorText.indexOf('nth-child') !== -1) {
aSelectors.push([current.selectorText, current.cssText.substring(current.cssText.indexOf('{') + 1, current.cssText.indexOf('}'))]);
}
}
}
var jqCssObject = {},
declarations = [],
keyValuePair = [];
for (var k = 0; k < aSelectors.length; k++) {
declarations = aSelectors[k][1].split(';');
for (var m = 0; m < declarations.length; m++) {
keyValuePair = declarations[m].split(':');
jqCssObject[keyValuePair[0]] = keyValuePair[1];
}
$(aSelectors[k][0]).css(jqCssObject);
}
}
爲什麼你不使用jQuery選擇器?還有http://css3pie.com/ – Blender
是的。但我懶得編輯js文件,每次我給css添加一些n-child。這將是很多代碼。感謝您的CSS鏈接。 – paperstreet7