Показать сообщение отдельно
  #9 (permalink)  
Старый 08.02.2010, 20:29
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Таксь. Ядро проанализировал. Говорю сразу кеш можете выкинуть. он не нужен, только испортит выборку.
Пример: сделали выборку, добавили элемент в дом и сделали еще раз такую выборку - получаем теже элементы, а новый не добавляется.
Это раз.
Два.
Q('* SPAN I + SPAN DIV B + *')

Заместь * представте что интересует не тег как фильтр, а сам фильтр, например атрибуты. И тут то ваш скрипт и полетел. jQ в два раза быстрее Вашего в этом случае. Этот метод я уже давно продумал выбирать все элементы в текущем контексте потом в каждом полученном выбирать новые + это все проверять(отсеивать), оч много лишних действий.
А еще баг есть
У Вас там есть такая фишка
315	var selectors = iargs.replace(/\s?(>|\+|~)\s?/g, "$1")

Тут вы убираете пробелы между комбаноториками, а не подумали что может быть такой запрос (привожу как пример)
Q('* SPAN I[name=Вася + Пупкин] + SPAN DIV B + *')

В данном случае фильтр искорябится...

П.С. тестил как Ваш, так и jQ без querySelectorAll и кешей. Задумка неплохая, и кстати понравилась фишка с getByCombinators.
П.П.С Отмечу что у Вас нет такого бага "+" как в jQuery это радует и вообще техника выборки другая => селекторы работают как надо. в JQ в этом плане есть немного багов
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 08.02.2010 в 20:37.
Ответить с цитированием