Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   EASY - JavaScript-выборка по CSS1-3 склекторам (https://javascript.ru/forum/project/14487-easy-javascript-vyborka-po-css1-3-sklektoram.html)

Latro 18.01.2011 18:55

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

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

Объясню как она работает:
<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Кб).

Matre 18.01.2011 19:14

Очень, очень медленно Ваша выборка работает, это делает её использование бессмысленным. Но для первого раза весьма неплохо.
Не хватает селекторов для поиска по регулярным выражениям (а-ля div[class=`\w{1,3}`i]). И ещё всяких вкусностей, например, поиска по уровню вложенности чилда (div a:3-10 — найдёт a с вложенностью в div на 3-10 уровне). Просто наскучили Sizzle-подобные движки. ;)

советую взгленуть реализацию моего движка http://javascript.ru/forum/project/1...elektorov.html Вашь конечно с ним несравнится,но будет вам в пример
благодарностей ненадо

кстати \b я не нашол в исходнике-значет по класам неправильно ищит
ну например в <div class="primer iese"> $E('.primer') ненайдет
а вызов a + * вобще кидает ошибку,lol
как и a:contains(")")

Latro 18.01.2011 21:28

Matre, это ваша реализация выборки не сравнится с моей, ибо моя реализация работает во всех браузерах, а ваша только портит позиционирование z-index'а!

P.S.:
Цитата:

Сообщение от Matre
Очень, очень медленно Ваша выборка работает

Цитата:

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

Добавлю: дата билда - 3 сентября 2010 года.
Уже осуществил новые реализации поиска, которые гораздо быстрее нынешней версии!
В ближайшее время собираюсь выложить!

Gvozd 18.01.2011 23:01

Latro,
не обращайте на него внимания
он местный псих и тролль

Matre 18.01.2011 23:07

Gvozd
что я нетак написал??

Latro 19.01.2011 08:55

Gvozd,
а что вы скажите по поводу моей выборки?

Kolyaj 19.01.2011 10:02

Цитата:

Сообщение от Matre
кстати \b я не нашол в исходнике-значет по класам неправильно ищит

Если вы используете \b в поиске по классам, значит ваш скрипт неправильно работает. Тестировать на классах class="foo bar-baz".

Matre 19.01.2011 10:10

Latro
вашь движок весь в дырах
какой селектор не возьми
то type-error, то ищет не правильно
по чему вы игнорируете мое сообщение

Kolyaj
в движке который я выкладывал такой проблемы нет
но почему то вы неоцениели его по довстоинству

Kolyaj 19.01.2011 10:14

Цитата:

Сообщение от Matre
в движке который я выкладывал такой проблемы нет
но почему то вы неоцениели его по довстоинству

Там другая проблема -- он некроссбраузерный. Некроссбраузерные скрипты мне неинтересны. В частности в тех браузерах, в которых ваш движок работает, есть querySelectorAll, и там ваш движок не нужен.

Matre 19.01.2011 10:16

когда будет включена подержка css3-движок станет бомбой
не все же сразу

Цитата:

Некроссбраузерные скрипты мне неинтересны.
ваше субьективное мнение неимеет никакого зночения
я то же могу сказать,что 7-3=5 ,только это ни чего непоменяет


Часовой пояс GMT +3, время: 00:03.