Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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Кб).
Ответить с цитированием
  #2 (permalink)  
Старый 18.01.2011, 19:14
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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

советую взгленуть реализацию моего движка мой движок ксс селекторов Вашь конечно с ним несравнится,но будет вам в пример
благодарностей ненадо

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

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

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

P.S.:
Сообщение от Matre
Очень, очень медленно Ваша выборка работает
Сообщение от Latro
Увы, но выборкой я уже не занимался давненько, точнее занимался, и это далеко не последняя версия, уже есть наброски гораздо более быстрой выборки!
Добавлю: дата билда - 3 сентября 2010 года.
Уже осуществил новые реализации поиска, которые гораздо быстрее нынешней версии!
В ближайшее время собираюсь выложить!
Ответить с цитированием
  #4 (permalink)  
Старый 18.01.2011, 23:01
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Latro,
не обращайте на него внимания
он местный псих и тролль
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2011, 23:07
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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

Gvozd,
а что вы скажите по поводу моей выборки?
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2011, 10:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Matre
кстати \b я не нашол в исходнике-значет по класам неправильно ищит
Если вы используете \b в поиске по классам, значит ваш скрипт неправильно работает. Тестировать на классах class="foo bar-baz".
Ответить с цитированием
  #8 (permalink)  
Старый 19.01.2011, 10:10
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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

Kolyaj
в движке который я выкладывал такой проблемы нет
но почему то вы неоцениели его по довстоинству
Ответить с цитированием
  #9 (permalink)  
Старый 19.01.2011, 10:14
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Matre
в движке который я выкладывал такой проблемы нет
но почему то вы неоцениели его по довстоинству
Там другая проблема -- он некроссбраузерный. Некроссбраузерные скрипты мне неинтересны. В частности в тех браузерах, в которых ваш движок работает, есть querySelectorAll, и там ваш движок не нужен.
Ответить с цитированием
  #10 (permalink)  
Старый 19.01.2011, 10:16
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34