кстати, недавно автор мутулза писал статью с сравнением мутулза и жиквери — мне лично очень понравилось первое сравнение — позиционирование фрэймворков самими авторами — мутулз для написания аккуратного яваскрипта, а жиквери — для обхода и манипуляции с домом. мне кажется достаточно четко
jQuery is a fast and concise Javascript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write Javascript.
MooTools is a compact, modular, Object-Oriented Javascript framework designed for the intermediate to advanced Javascript developer. It allows you to write powerful, flexible, and cross-browser code with its elegant, well documented, and coherent API.
думаю пояснять откуда эти тексты взяты необходимости нет
Это же простой маркетинг. Один надавил на одно, другой на другое, а по сути задачи-то они решают одни и теже. Разная идеология и стиль, поэтому они и существуют.
насколько я понимаю, в жиквери не расширяют прототип дом элемента. из за этого везде лепят $(element). так? и тормозить должно только в ослике, который прототипы для дом элементов не понимает.
странно, я jQuery отчасти как раз за это и люблю — за возможность работать с абстракциями, соответствующими селектору, а не с конкретными DOM-элементами.
комрад, это неверное утверждение. никто ничего не должен. отстутствие лишних методов для элементов DOM — это по своему не плохо. экономит память, например. а доля «нормальных браузеров» слишком мала. нужно просто осознать, почему так сделано и жить дальше :)
споры на тему, «вот моя хрень лучше вон той хрени, потому что...» ни к чему не приведёт :) везде есть свои плюсы и минусы, идеологическая подоплёка и бла бла бла.
доля нормальных браузеров вроде как больше половины уже. а насчет расхода памяти — надо проверить, но есть у меня подозрение, что кол-во методов драматического увеличения в памти не даст.
почему бы и не поспорить — в этот раз все вроде культурно и мирно проходит
я к тому спросил, что такой необходимости фактически нет. это применение идеологии prototype к jquery, что абсолютно неверно, потому что они принципиально разные.
«Полезное свойство, например, для кода выше, если поле login существует только для неавторизованного пользователя.» — такие вещи вообще нежелательно выполнять на клиенте если они там у этого пользователя не должны выполняться…
ну а то что они возвращают всегда пустые коллекции если ничего не найдено это на мой взгляд большой плюс… но в прототайпе метод $ возвращает не коллекцию а конкретный элемент… это альяс для getElementById() не надо его сравнивать с методом $ в jquery… они разные по назначению… сравнивайте тогда $$ прототайпа…
выше, где я писал про аккуратные скрипты имел ввиду как-раз такие возможности жиквери. это как в пыхпых отключить показ ошибок и все вызовы с @ начинать (кстати распространенная практика)
вы видимо с мутулзом слабо знакомы
код $$('#login').addEvent('click',… будет вести себя практически так-же как ваша строка на жиквери. но так на мутулзе обычно не пишут.
Интересное решение. Если бы я столкнулся с такой проблемой, то решил бы её через фрэйм: в скрытом фрэйме как в песочнице формируем задуманный контент страницы, затем перемещаем его в основной документ. Скрипты выполнились бы дважды, но обычно это не создст проблем. Хотя и document.write используется крайне редко. Теперь буду знать что лушче его не использовать, вдруг кто-то захочет мою страницу подгрузить к себе и огребет гемороя.
Из своей практики сознательного js, единственный раз когда использовал document.write — вставка банера. Хотя наверно есть другой способ вставить элемент в том место где стоит <script> </script>
Удивительно что все кто оставили комменты рассценили поняли топик как «В Муу добавили финтифлюшку, он стал нереально крут»
Если пользователям jq стало завидно, могу помочь адоптировать эту штуку для jq, хотя я в нем мало разбираюсь
использование в таком случае iframe тоже несет многие неудобства, к примеру область видимости уже созданных переменных в JS, вообщем я думаю что решение с переопределением document.write в данном случае более преимущественно.
Если будет желание портировать функцию переопределения document.write под jQ советую портировать алгоритм из библиотеки Fullajax, он более универсален и решает проблемы с указанными в статье примерами.
Поправьте меня, если я не прав, но это — как раз некорректная обработка. Корректная, это та, что определена стандартом (и по случаю реализована во всех браузерах).
Переопределять стандартные методы, которые ведут себя правильно на «что-то другое», тем более на такое, что и не работает-то почти — отличная дорога к дестабилизации системы и усложнению ее [возможной] интеграции. Вспомните известную проблему в prototype.js, связанную с переопределением в етой библиотеке глобального обьекта Element.
поправляю, они добавили работоспособность данной функции там где она не работала, после того как формирования DOM законченно. если использовать после закрытия DOM document.write весь контент страницы затирается, вообщем обычный document.write и AJAX по умолчанию не совместимы.
вы поймите, вы сейчас мыслите по шаблону, включите соображаловку — после того как законченно формирование DOM функция document.write — мусор, ее невозможно использовать, она мертва, а тут появляется вторая жизнь. переопределение этой функции как раз и идет после того как DOM сформирован. что тут неправильного?
sirus, ну зачем вы спорите? :-) Ну не в курсе человек, что иногда требуется не просто отправить «вэб-дванольную» форму, но и еще произвести некоторые манипуляции с оставшейся перед физиономией посетителя страницей.
ilinsky, та проблема с Element-ами былв просто незадокументаминентированной фичей. Но, нужно отдать должное авторам prototype — они благодаря этой «фиче» предвосхитили многие возможности других JS-фреймворков в плане нормальной работы возвращаемых после AJAX-запроса построения DOM.
MooTools — AJAX + document.write