Здравствуйте, Mamut, Вы писали:
M>Полный XPath поддерживать сложно, потому что все это — эмуляция, так как браузеры не обеспечивают нативную поддержку ни XPath ни CSS selectors
А ты не знаешь, как организована поддержка XPath в jQuery? Она эмулируется для всех браузеров, или всё таки используется нативная реализация там, где это возможно?
A>Это не совсем так: http://developer.mozilla.org/en/docs/DOM:document.evaluate
A>А ты не знаешь, как организована поддержка XPath в jQuery? Она эмулируется для всех браузеров, или всё таки используется нативная реализация там, где это возможно?
I>Согласен, частенько бывает. M>>и т.п.
M>>Полный XPath поддерживать сложно, потому что все это — эмуляция, так как браузеры не обеспечивают нативную поддержку ни XPath ни CSS selectors
I>есть полная реализация на js XPath 1.0 100k
Можешь дать ссылку? Я как раз ищу реализацию стандартного XPath, которая будет работать в IE, Opera. (в Firefox она и так уже есть)
I>Для простых случаев достаточно легко, для более сложных делается цепочка регспов, и при работе они в нужной последовательности перещелкиваются. I>НЕ, я просто в шоке, человек использующий jQuery видимо даже ни разу в листинг ее не лазил — не ужто не интересно было? I>Там кстати так и сделано. для быстроты правда коечто выкинуто из рекспов и реализовано через методы string, но суть таже.
S>>собрался доступ к элементу получать? Ну вот покажи мне, как на регекспах спрятать (display=none) все P c классом content. I>Кстати очень тупой вариант могу предложить — бежать тупо вперед по DOM, брать каждый объект-примитив — когда все в строчку засовывается и пробегать тупо аля /.*tagName='P'.*className='content'.*/ для примера вполне сгодится.
Ты примерчик-то напиши. А то языком молоть все горазды. I>тока надо глянуть что впереди в примитиве идет tagName или className
О да. а также глянуть нащот наличия вложенных тегов и прочей ерунды.
За то время, как ты этот аналог на регекспах пишешь, я тебе весь сайт на jQuery сваяю
I>За ответом что это есть походи по сайтам любых контор сайто девелопперских. Там разжовано 300 раз.
О, спасибо великий гуру. Я, вишь ли, эти сайты не читаю. Я их пишу.
I>напишу сам достаточно быстро либо же воспользуюсь готовым паттерном, скаченным из библиотеки
Паттерном чего?
I>ээээ..... I>"обычно у программистов уже есть свой оверлей со всеми стандартными функциями" типо выше написано было
S>>А что, уже все фреймворки написаны? I>Ну их достаточно на самом деле. Если уж ты так офигенно любишь fw — юзай Ruby-on-rails. Че, неужели плохой? :D
При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
S>О да. а также глянуть нащот наличия вложенных тегов и прочей ерунды.
Если ты не в состоянии в голове это вооброзить — херовый то программер однако Задачу то помнишь?
типа надо найти элемент у которого есть два св-ва определенных tagname & classname, там похер на вложенные теги — приметив возвращает текстовые св-ва ОДНОГО DOM объекта — смысл лишь рекспом проверить присутствие у него этих двух св-в — если они есть — значит объект НАШ. Все. программер блин ) подика на дельфи программишь? :D
I>>За ответом что это есть походи по сайтам любых контор сайто девелопперских. Там разжовано 300 раз. S>О, спасибо великий гуру. Я, вишь ли, эти сайты не читаю. Я их пишу.
Ога, оно и видно, бугага, писатель ))
I>>напишу сам достаточно быстро либо же воспользуюсь готовым паттерном, скаченным из библиотеки S>Паттерном чего?
Эээ... мож тебе еще и все термины разжовывать,а? Может обучение провести? на вики посмотри code pattern че такое. не ну полный писец
S>При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь?
У RoR отличный фрейворк написан КАК серверный ТАК и клиентский.
А вот такое интересное дело — когда глядел jQuery — они там создают при вызове екземпляры — оно и понятно — надо же както в chain передавать данные. Так вот вопрос меня мучит — создание екземпляра каждый раз — ни есть хорошо — я согласен что особых ограничений на это нет, но всеже прикольно было бы обойтись статикой.
Так вот вопрос собсно — можно ли? chain на статике организвать вполне можно, осатлось выяснить можно ли каким либо оброзом при вызове n+1 фии передать ей хотя бы один параметр из n? я чето поковырялся и ниче таолкового не придумал :D
Но если так сделать — то скорость работы библиотеки должна подняться на %15-30 а утечка памяти в старом добром IE и FF сократится в разы — не будет он толстеть — т.к. статика — екземпляры не создаются. Есть идеи?
Здравствуйте, ionicman, Вы писали:
S>>О да. а также глянуть нащот наличия вложенных тегов и прочей ерунды. I>Если ты не в состоянии в голове это вооброзить — херовый то программер однако Задачу то помнишь?
Я помню. I>типа надо найти элемент у которого есть два св-ва определенных tagname & classname, там похер на вложенные теги — приметив возвращает текстовые св-ва ОДНОГО DOM объекта — смысл лишь рекспом проверить присутствие у него этих двух св-в — если они есть — значит объект НАШ. Все.
о, круто. То есть пишем полный перебор дом-дерева всякий раз руками. Ты код-то напиши, не стесняйся. Пальцы гнуть все горазды. I>программер блин ) подика на дельфи программишь? :D
Раньше программил. А теперь все больше веб приложения.
I>>>напишу сам достаточно быстро либо же воспользуюсь готовым паттерном, скаченным из библиотеки S>>Паттерном чего? I>Эээ... мож тебе еще и все термины разжовывать,а? Может обучение провести? на вики посмотри code pattern че такое. не ну полный писец
Да я обучение-то и сам могу провести. S>>При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь? I>У RoR отличный фрейворк написан КАК серверный ТАК и клиентский.
А как это Руби на клиенте оказался? На клиенте, окромя JS, ничего интересного не поддерживается.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, ionicman, Вы писали:
M>>Эмулирует: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/selector/selector.js M>>Надо будет им подсказать I>К сожелению, evaluate более менее держит только опера и ff и то с небольшими глюками.... IE держит лишь маааленький кусочек — можно сказать там этого нет
В любом случае его использование там, где это возможно, может дать значительный прирост скорости.
Какой сложный перец, а? Исходник то в голове представить ну никак. Ну на 3 минуты ушло:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div><div><div class="ext">asasd</div></div></div>
<div class="ext"></div>
<script language="javascript">
function TreeGo( o, func ) {
while ( o != null ) {
func( o );
if ( o.firstChild != null ) TreeGo( o.firstChild, func );
o = o.nextSibling;
}
}
TreeGo(
document.body,
function( o ) {
o.toString;
}
);
function getPrimitive( o ) {
var t = "";
for ( var i in o ) i != "innerHTML" && i != "outerHTML" && ( ""+o[i] ).indexOf("function") < 0 ? t += i + "=" + o[i] + "," : "";
return t;
}
var arr = [];
TreeGo(
document.body,
function( o ) {
if ( /(classname *?= *?ext.*?tagname *?= *?div)|(tagname *?= *?div.*classname *?= *?ext)/i.test( getPrimitive( o ) ) ) arr.push( o );
}
);
for ( i = 0; i < arr.length; i++ ) alert( arr[i].tagName + " " + arr[i].className );
</script>
</body>
</html>
getPrimitive платформо — зависимая, поэтому для нее затычка, если хошь получить список примитива быстро какпай либо мелкомягких либо Gecko тама написано все.
рекспами разгребается всё кстати, прикинь, неверующий :D
I>>программер блин ) подика на дельфи программишь? :D S>Раньше программил. А теперь все больше веб приложения.
Оно и видно
S>Да я обучение-то и сам могу провести.
ага, я понял уже :D
S>>>При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь? I>>У RoR отличный фрейворк написан КАК серверный ТАК и клиентский. S>А как это Руби на клиенте оказался? На клиенте, окромя JS, ничего интересного не поддерживается.
А rails это ЧО? А на чем наваяна клиентская часть? :D
Короче, иди учи матчасть — с тобой говорить что против ветра.
Здравствуйте, ionicman, Вы писали:
I>Какой сложный перец, а? Исходник то в голове представить ну никак. Ну на 3 минуты ушло:
Ай малацца. Ну, не все условия задачи запомнил, но это не страшно. I>рекспами разгребается всё кстати, прикинь, неверующий :D
Обожаю общаться с людьми, которые думают, что я ламер.
А теперь протести свой говнокод на вот таком контенте:
S>>Да я обучение-то и сам могу провести. I>Короче, иди учи матчасть — с тобой говорить что против ветра.
Ну что, знаток матчасти, попробуешь свой код поправить?
В принципе, можешь не трудиться.
Я думаю, всем заинтересованным и так видно, что написать 1 (одну) строчку jQuery, которая будет еще и делать именно то что надо, гораздо быстрее, чем отладить regex-based ужос, который ты пропагандируешь.
Вот, на всякий случай, полное решение исходной задачи:
$('p.content').hide();
Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.
Небольшое усложнение или изменение исходной задачи — и ты снова день потратишь на отладку. А в jQuery можно за тридцать секунд справиться.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
I>А вот такое интересное дело — когда глядел jQuery — они там создают при вызове екземпляры — оно и понятно — надо же както в chain передавать данные. Так вот вопрос меня мучит — создание екземпляра каждый раз — ни есть хорошо — я согласен что особых ограничений на это нет, но всеже прикольно было бы обойтись статикой.
I>Так вот вопрос собсно — можно ли? chain на статике организвать вполне можно, осатлось выяснить можно ли каким либо оброзом при вызове n+1 фии передать ей хотя бы один параметр из n? я чето поковырялся и ниче таолкового не придумал :D
I>Но если так сделать — то скорость работы библиотеки должна подняться на %15-30 а утечка памяти в старом добром IE и FF сократится в разы — не будет он толстеть — т.к. статика — екземпляры не создаются. Есть идеи?
В смысле chain вызовы организовать на static классах, так как щас при каждом обращении к $ динамически создается объект jQuery.
Это я в смысле о том как можно jQuery оптимизировать :D
Вот ты приколист однако. А может те сразу сайт написать — я те сделал пример, чтобы показать что ты нихрена в рекспах не разбираешься. Добавить и хайд и все остально 5 сек — не более. Обойти данную ситуацию — это добавить всего ОДИН символ в regexp. Угадай какой? правильно — делиметр. S>Ну что, знаток матчасти, попробуешь свой код поправить?
см, выше. Опять доказываешь что ты ламер.
S>Я думаю, всем заинтересованным и так видно, что написать 1 (одну) строчку jQuery, которая будет еще и делать именно то что надо, гораздо быстрее, чем отладить regex-based ужос, который ты пропагандируешь.
По моему спор не про это был, а про возможности регспа. Письмо свеже первое погляди, умник.
S>Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.
Хехе... вот по этому ты и хреновый программер. во первых все делается но ООП, и если грамотно — то при малом числе функций в коде гораздо проще разобраться, нежели учить синтаксис фреймворка, isn't it? Другое дело — если при плохом код-дизайне функции и их количство разрастается до невообразимого — тогда да.
S>Небольшое усложнение или изменение исходной задачи — и ты снова день потратишь на отладку. А в jQuery можно за тридцать секунд справиться.
Я те по секрету расскажу: если мне надо чтото скрывать или показывать часто — то 90% это контрол а не контент — контейнер. А если же это контент — контейнер — то на его собачатся id, и делается потом getElementById — и все.
А вот внутри контрола если надо хитро бегать — там да, может пригодится jQuery — ибо с помощью нее это сделать быстрее, но работать будет медленнее если контрол шибко большой или шибко динамический.
А если ты в случае простых страничек с 2-3 контент контейнерами бужешь jQuery юзать — то это примерно тоже самое что в ларек за пивом на ракете лететь, умник.
M>>Это ты все об чем? Я что-то не понял
I>В смысле chain вызовы организовать на static классах, так как щас при каждом обращении к $ динамически создается объект jQuery. I>Это я в смысле о том как можно jQuery оптимизировать :D
Какие такие static классы в JS?
В jQuery динамиически создаются объекты jQuery, потому что единственная альтернатива — расширять DOM, что не есть хорошо.
Здравствуйте, ionicman, Вы писали: I>Вот ты приколист однако. А может те сразу сайт написать — я те сделал пример, чтобы показать что ты нихрена в рекспах не разбираешься.
Ну, ради такого не стоило стараться. Вот если бы ты что умное показал... I>По моему спор не про это был, а про возможности регспа. Письмо свеже первое погляди, умник.
Нет. Я поясню, специально для ограниченных: я не утверждал, что воспроизвести XPath/CSS selector на регекспах нельзя.
Я утверждал, что заколебешься ты это воспроизводить. И ты образцово-показательно заколебался. ЧиТД.
З.Ы. одим символом ты проблему не решишь
S>>Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.
I>Хехе... вот по этому ты и хреновый программер.
Да куда уж мне, сирому. Вот ионикман, который в одном регекспе три ошибки допустил — тот крут. Не хотел бы я такого в своем отделе иметь — как же ты более сложную задачку решить сможешь? I>во первых все делается но ООП, и если грамотно — то при малом числе функций в коде гораздо проще разобраться, нежели учить синтаксис фреймворка, isn't it?
Это какой-то пеарный булшит пошел. Вот я тебе дал пример задачи, на которой jQuery полезен — ты же этого просил? Я тебя никак не ограничивал ни ООП, ни функции писать не заставлял.
А почти весь jQuery — это функция $(). Куда как проще с ней один раз разобраться, чем в твоих TreeGo ковыряться, кои на каждой страничке уникальны.
Ты там еще и массив глобальный завел — вообще кросавчег Вот уж где разгул безудержного ООП.
I>Другое дело — если при плохом код-дизайне функции и их количство разрастается до невообразимого — тогда да.
Ну, ты вот только что пример плохого дизайна привел. Приведи пример хорошего.
I>Я те по секрету расскажу: если мне надо чтото скрывать или показывать часто — то 90% это контрол а не контент — контейнер.
Да наздоровье. Я этих контролов видел в ассортименте. Большинство генерят совершенно чудовищный клиентский код. Который еще и работает медленно. I> А если же это контент — контейнер — то на его собачатся id, и делается потом getElementById — и все.
Я в курсе про getElementById. Даже он, кстати, записывается в jQuery куда как компактнее. Впрочем, чего это я? Не нравится — не ешь.
Если ты предпочитаешь вручную педалить страницы кода вокруг простых задач, или брать готовый контрол (ты, кстати, не с Delphi начинал?), который сгенерит весь этот булшит автоматичкески — велком в лагерь неудачников.
I>А вот внутри контрола если надо хитро бегать — там да, может пригодится jQuery — ибо с помощью нее это сделать быстрее, но работать будет медленнее если контрол шибко большой или шибко динамический.
I>А если ты в случае простых страничек с 2-3 контент контейнерами бужешь jQuery юзать — то это примерно тоже самое что в ларек за пивом на ракете лететь, умник.
А, ну да. Я вообще в веб программировании мало понимаю, так, погулять вышел. Ты ссылку на образцы своего творчества не дашь? Чтобы я мог припасть, так сказать, к истокам мудрости.
Правда пока от тебя кроме пальцев ниче не видать. Где она, мудрость-то?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.