melky,
опробовал я твой вариант тот что ты указал в
посте для мелких сайтов он конечно норм, но вот при большом количестве элементов на странице чуствуется довольно таки огромное падение производительности. Так как браузер перерисовывает документ при любых манипуляциях со стилями, даже если такого свойства нет в CSS то он вызывает все равно перерисовку.
Я вот накидал примерный селектор:
(function( window ){
var stylesheet = document.createStyleSheet();
function qSelector( selector ) {
var elem, index = 0, result = [];
if ( stylesheet.lastSelector !== selector ) {
stylesheet.cssText = selector + "{testNativeSelector:1}";
stylesheet.lastSelector = selector;
}
if ( stylesheet.rules.length && stylesheet.rules[ 0 ].selectorText !== "UNKNOWN" ) {
var elems = document.getElementsByTagName( "*" );
for( ;elem = elems[ index++ ]; ) {
if ( elem.currentStyle.testNativeSelector ) {
result[ result.length ] = elem;
}
}
} else {
throw new Error( "Syntax error: " + selector );
}
return result;
}
window.qSelector = qSelector;
})( window );
можешь потестить, при 2000 элементов на странице, задержка на 2-3 сек в ИЕ7 и 1-2 сек в ИЕ8