目標は、css3 nth-child 疑似クラスを jQuery で pollyfill することです。そのため、css ルールを解析し、css から直接 nth-child をサポートしていない古いブラウザー用に jQuery でそれらを再適用する必要があります。だから私はいくつかのコードを書きましたが、似たようなものがすでにgithubなどに存在していると確信しています。誰かがすでにそのような問題に遭遇している可能性がありますか? これが私のコードです:
// 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);
}
}