Показать сообщение отдельно
  #1 (permalink)  
Старый 18.01.2011, 18:55
Интересующийся
Отправить личное сообщение для Latro Посмотреть профиль Найти все сообщения от Latro
 
Регистрация: 27.02.2010
Сообщений: 18

EASY - JavaScript-выборка по CSS1-3 склекторам
Представляю вашему вниманию выборку которая легко осуществляет поиск по CSS1-3 селекторам. Исходя из названия, можно понять что выборка мала, и это действительно так, из всех известных мне выборок, моя выборка меньше минимум в 2 раза! Наверное это её самая первая особенность!

Увы, но выборкой я уже не занимался давненько, точнее занимался, и это далеко не последняя версия, уже есть наброски гораздо более быстрой выборки!

Объясню как она работает:
<script type='text/javascript'>
easy(selectors)[number]

  //  Пример:
easy('html:root body > div + span#exemple ~ [class$="xemple"]:checked')[0].style.color='red'
</script>


Список возможностей:
//  стандартный набор селекторов:
*
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!

Также в выборку можно добавить свои псевдо-классы, это делается очень просто:
<script type='text/javascript'>
easy['my-pseudo-class']=function(){ [ваш код] }

// пример:
$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, это сделано чтобы пользователь мог видеть реальную скорость выборки, да и вообще, это ещё не последняя версия, думаю поставить эту функцию в других, более быстрых версиях!

Скачать тут(размер - 4,56Кб).
Ответить с цитированием