|
Модераторы: Sardar, Aliance |
|
cruelangel |
|
|||
Опытный Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 1 Всего: 8 |
теперь совершенно не совместимо ни с xpath, ни с css, ни даже с jpath^1 ^_^ новая версия ещё больше ориентирована на яваскрипт. от осей отказался, но остались так называемые "макросы". основной оператор - точка. если после него указано имя, то он вернёт значение свойства с этим именем. если имя не указано, то он вернёт значения всех свойств. если указана звёздочка - вернёт все значения, которые "труъ" ;-). alert( jpath.call( [ 1, 2, 3 ], ' .1 ' ) ); // вернёт [ 2 ] alert( jpath.call( [ false, 1, 2, 3 ], ' .* ' ) ); // вернёт [ 1, 2, 3 ] alert( jpath.call( [ [ 1, 1.5 ] , [ 2, 2.5 ], 3 ], ' . .1 ' ) ); // вернёт [ 1.5, 2.5 ] получить следующий узел можно так: alert( jpath.call( node, ' .nextSibling ' )[0] ); // вернёт node.nextSibling alert( jpath.call( node, ' + ' )[0] ); // то же самое другие макросы: alert( jpath.call( node, ' - ' )[0] ); // вернёт node.previousSibling alert( jpath.call( node, ' ^ ' )[0] ); // вернёт node.parentNode если нужны не любые узлы, а только элементы, то нужно указать звёздочку в качестве имени: alert( jpath.call( node, ' +* ' )[0] ); // вернёт следующий элемент если нужно отфильтровать по имени: alert( jpath.call( node, ' +tr ' )[0] ); // вернёт следующую строку таблицы если нужно отфильтровать ещё и по классу: alert( jpath.call( node, ' ^*:megacontainer ' )[0] ); // вернёт ближайшего предка с классом "megacontainer" alert( jpath.call( node, ' +p:alert ' )[0] ); // вернёт следующий параграф с классом "alert" слэши по прежнему возвращают коллекции детей или потомков: alert( jpath.call( node, ' / ' ) ); // вернёт всех детей alert( jpath.call( node, ' /* ' ) ); // вернёт все дочерние элементы alert( jpath.call( node, ' /li:odd ' ) ); // вернёт все элементы списка с классом 'odd' alert( jpath.call( node, ' // ' ) ); // вернёт всех потомков (медленная и как правило бессмысленная операция) alert( jpath.call( node, ' //* ' ) ); // вернёт все элементы-потомки alert( jpath.call( document, ' //a:j-hover ' ) ); // вернёт все ссылки с классом 'j-hover' доступ к отдельному элементу коллекции осуществляется с помощью точки: alert( jpath.call( node, ' / .0 ' ) [0] ); // вернёт node.firstChild и наоборот, используя квадратные скобки можно организовывать коллекции: alert( jpath.call( node, ' [^] ' ) ); // вернёт всех предков alert( jpath.call( node, ' [+tr] ' ) ); // вернёт все следующие строки alert( jpath.call( node, ' [ +tr +tr ] ' ) ); // вернёт каждую вторую строку после текущей alert( jpath.call( node, ' [/*] ' ) ); // вернёт всех потомков alert( jpath.call( node, ' //* ' ) ); // то же самое, но гораздо быстрее квадратные скобочки можно вкладывать друг в друга. возвращаемое значение, как и прежде - массив найденных значений (null и undefined не возвращаются) если функцию jpath сделать методом объекта, то при её вызове он будет будет являться началом пути. соответственно по дефолту - jpath( 'путь' ) - стартоым объектом является объект window. alert( jpath.call( node, '//*' ) ); // вернёт все элементы - потомки node node.jpath= jpath; alert( node.jpath( '//*' ) ); // вернёт все элементы - потомки node есть мысли в какую сторону стоит развивать всё это дальше? : Это сообщение отредактировал(а) cruelangel - 18.11.2007, 13:20 |
|||
|
||||
JSman |
|
|||
Опытный Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: 1 Всего: 4 |
XPath не убьешь, по простой причине: у него высокое быстродействие. Поэтому как минимум советую написать, там где возможно, конвертер твоего запроса в запрос XPath.
|
|||
|
||||
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |