Представляю вашему вниманию выборку, которая легко ищет по CSS1-3 селекторам, тестируя её в SlickSpeed я обнаружил в ней приличное количество багов, но в результате половина была исправлена, а половина так и осталась, вообще по сути выборка всё ищет и находит нормально, но почемуто этот "заумный" SlickSpeed определил в ней баги...
Исходя из названия, можно понять что выборка мала, и это действительно так, из всех известных мне выборок, моя выборка меньше минимум в 2 раза! Наверное это её самая первая особенность!
Выборкой я уже не занимался 2 месяца, и сегодня шарясь по компьютеру набрёл на неё, именно это и спровоцировало меня о ней заявить тут!)
В общем описывать её можно долго, рассуждения это конечно хорошо, но главное, выборкой я решил опять заняться, темболее за 2 месяца я получше стал работать и понимать DOM!
// Пример: easy('html:root body > div + span#exemple ~ [class$="xemple"]:checked')[0].style.color='red' </script>
Для удобства можно сделать вот так:
Code
<script type='text/javascript'> var $=easy; // заместо easy потребуется писать $ </script>
Список возможностей:
Code
* E E[foo] E[foo='bar'] E[foo~='bar'] E[foo^='bar'] E[foo$='bar'] E[foo*='bar'] E[foo|='bar'] E[foo!='bar'] E:root E:nth-child(n) E:nth-last-child(n) E:nth-of-type(n) E:nth-last-of-type(n) E:first-child E:last-child E:first-of-type E:last -of-type E:only-child E:only-of-type E:empty E:link E:target E:lang(fr) E:enabled E:disabled E:checked E.class E#id E:not(select ors) E:has(selectors) E F E > F E + F E ~ F E < F // почти тоже самое что и E:has(selectors), только E - это то что вложено в F E, F
Ну, я вкраце рассказал, вот собственно ссылка: вот она! Ссылка на DEMO!
p.s.: выборка в стадии разработок, поэтому просьба не писать негативных комментариев!
aka Latro
Сообщение отредактировал DSC - Четверг, 12.08.2010, 00:15
Infamous, это одна из незаконченых вариантов выборки, так что я не знаю, может есть вариант побыстрее, а насчёт последнего, это да, иерархия у меня медленная, и ещё, в jQ стоит querySelectorAll, я его не буду ставить до тех пор пока не сделаю нормальный вариант! aka Latro
Aleko, просто дело в том, что я уже понимаю как это всё делается, вот собираюсь заняться сейчас переписью заново, чтобы сделать стоющий вариант!) Да, и спс!) aka Latro
DSC, ничерта не понял и только расстроился . Хотелось реализовать нормальную работу по цепочке и поиск в HTMLCollection. Начал всё это дело расписывать и начисто пропало желание продолжать . Совсем не хочется сейчас изобретать способ парсить селекторы. Идея конечно была, но реализовывать влом. В общем ещё раз респект тебе. Бесплатные обои.
Aleko, ну спс конечн)) Я вообще решил делать выборку когда увидел твой sAD.get() Вообще трудностей в ней мало, хотя были проблемы с реакцией на положение фильтров, впринцепи если всё продумать, то получится очень даже неплохо) Вот щас решил переписывать, уже по результатам скорости получше сделал, хотя и сделал только тег, класс, ид, и аттрибуты) aka Latro
Infamous, я же попросил без гонева! И вообще, я могу как и другие выборки поставить querySelectorAll, и она тоже будет супер быстрой! Aleko, незнаю, щас попробывал то что ты написал сделать, всё вроде норм... Покаж скрин aka Latro
p.s.: выборка в стадии разработок, поэтому просьба не писать негативных комментариев!
Aleko, я объясню в чём дело: выборкой я присваиваю checked первому input'у, а как известно FireFox при обновлении страницы сохраняет значения checked, disabled и т.п., именно поэтому и выделяется первый, т.к. теперь уже он первый со значением checked==true! Очищая кэш, ты удаляешь сохранённые данные, и браузер реагирует опять как в начале! aka Latro
Обновил выборку, теперь она стала побыстрее и поменьше весом(на 810байт), сейчас сжатая версия весит 4,56Кб!
Список возможностей:
Code
// стандартный набор селекторов: * E[foo] E[foo=bar] E[foo~=bar] E[foo^=bar] E[foo$=bar] E[foo*=bar] E[foo|=bar] E:root E:nth-child(n) E:nth-last-child(n) E:nth-of-type(n) E:nth-last-of-type(n) E:first-child E:last-child E:first-of-type E:last -of-type E:only-child E:only-of-type E:empty E:link E:target E:lang(fr) E:enabled E:disabled E:checked E:not(selectors) E.class E #id E F E > F E + F E ~ F E, F
// дополнительный набор селекторов(нужный по мнению автора): E[foo!=bar] E:button E:contains(text) E:has(selectors) E:input E:parent E:selected E:unchecked E < F
При использовании выборки, её название можно писать как easy, так и $E!
Также в выборку можно добавить свои псевдо-классы, это делается очень просто:
// пример: $E.myid=function(o,n){return o.id==n} // если вы собираетесь чтобы у псевдо-класса не было переменной информации(информации в скобках, да и самих скобок), то второй атрибут укажет на название псевдо-класса
$E.ids=function(o,v){return o.id==v} // данный вариант означает, что в скобках псевдо-класса будет указываться нужный айди
$E.id=function(o,v,n){return o[n]==v} // тоже что и предыдущий вариант, только третий атрибут указывает на название псевдо-класса! </script>
Выборка не использует querySelectorAll, это сделано чтобы пользователь мог видеть реальную скорость выборки, да и вообще, это ещё не последняя версия, думаю поставить эту функцию в других, более быстрых версиях!
aka Latro
Сообщение отредактировал DSC - Четверг, 07.10.2010, 23:17
Aleko, нелохо, по сокращались в основном function, их больше всего было) Кстати написал вариант иерархии побыстрее!) насчёт меньше не знаю, может немного больше кода... p.s.: у тебя подсветка корявит код, сделай его с переносами и посмотри список сплитов els e aka Latro
Сообщение отредактировал DSC - Суббота, 16.10.2010, 17:14