Показать сообщение отдельно
  #93 (permalink)  
Старый 03.06.2012, 19:43
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием