css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
14 Янв
Сегодня jQuery исполнилось ровно три года, с чем можно поздравить John Resig & jQuery Team, ну и нас с Вами конечно. И сегодня же, к Дню Рождения библиотеки, команда jQuery выпустила очередную версию – jQuery 1.3. В течение 2-3 недель будет выпущен релиз 1.3.1, где обещают отловить может быть оставшиеся мелкие ошибки. Но что же изменилось по сравнению с предыдущей версией? Давайте узнаем…
Переписан движок селекторов. Теперь он примерно на 49% быстрее, чем в предыдущей версии.

jQuery теперь поддерживает события, которые могут быть связаны со всеми элементами, как существующими в DOM, так и с теми, которые будут добавлены в будущем.
$("p").live("click", function(){
$(this).after("Another paragraph!");
});
Кликаем по параграфу, чтобы добавить другой параграф, а новый метод live связывает событие click со всеми параграфами. Хотите пример?
Можно забыть о плагине Live Query (эх, ведь только вчера написал про него…), а более подробно о новых методах live() и die() в оригинальной документации на сайте jQuery.
Полностью переписан механизм вставки HTML в документ – методы append, prepend, before, after. Теперь это работает почти в 6 раз быстрее, чем в предыдущей версии.

Полностью переписан метод offset() и теперь он работает почти в 3 раза быстрее.

Методы hide() и show() были переписаны и теперь работают в 2,5 раза быстрее.

Еще одно изменение – более не используются методы jQuery.browser, jQuery.browser.version и jQuery.boxModel. Смотрите документацию на новый метод jQuery.support на официальном сайте jQuery. Метод имеет довольно большое количество свойств, позволяющих протестировать браузер пользователя.
Важно отметить, что метод jQuery.browser все еще присутствует в jQuery, поскольку слишком много плагинов зависят от него.
Загрузить версию jQuery 1.3 можно здесь http://docs.jquery.com/Downloading_jQuery
Полный текст релиза на английском языке можно найти на http://docs.jquery.com/Release:jQuery_1.3
Отзывов (28) на «jQuery 1.3»
Отличная новость! Обожаю jQuery
подождем первого сервис пака
Только вчера искал плагин LiveQuery, нашел, поставил, заработало… Захожу на их сайт через 15 минут – и уже версия 1.3. Забавно )))
Очень радует, что функционал этого плагина включили в ядро.
Новая версия под IE 6.0 глючит кое-где…
А жаль, вроде и правда пошустрее работает. Пришлось пока старую вернуть, 1.2.6
Эхх… 2 часа настраивал drag-n-drop и сейчас только понял что он с 1.3 не хочет работать..
Будем ждать значт.
Может так и должно быть, но live не работает на событие submit
1.3 пока работает не очень.
Будем ждать сервиспака
Релиз 1.3.1 появился на сайте jQuery. Пофиксили 23 бага. Может уже попробовать…
Хоть убейте, но ЛайвКвери не работает. По-старинке использую плагин отдельно.
Метод live нормально работает у меня, есть некоторые события, для которых он не реализован…например submit, для этого использую livequery
Действительно очень странно, у меня даже на клик не работает. Отключил везде, где можно кеш, все равно не работает.
Что самое интересное, подумал что Лайв не хочет обрабатывать подгруженный ХТМЛ. Ладно, поумал я, и переписал все на ДжейСон. Он все равно не заработал. Включил Лайв отдельно, переписал события как надо и заработало. Плюс один – теперь все крутится на ДжейСон(я был даже удивлен, как на столь малом коде как у меня ощущается оптимизация).
у меня animate() отказал
Как оказалось я его не правильно варил: по страинке через livequery().
В 1.3.х нужно использовать просто live()
То есть $(this).live(‘mouseover’,function(){
//Some Function
});
Ух ты, не знал что он такой быстрый стал, я консерватор и обновляться не спешил, теперь обновился. Спасибо!
Скажите пожалуйста почему так долго не исправляют этот баг в новых версиях? http://dev.jquery.com/attachment/ticket/1747/unique.patch
Речь в этом тикете шла о том, что метод jQuery.unique( array ), который по идее должен оставлять в массиве только уникальные элементы, не работает, если в качестве элемента массива выступают например числа, строки и т.д.
Тикет этот на самом деле давно закрыт – в документацию внесено изменение и на данный момент, если ее внимательно прочитать…
Note that this only works on arrays of DOM elements, not strings or numbers.
То бишь – не забывайте ребята, что эта фиговина работает только с массивами элементов DOM, но не с массивами, где элементами являются строки или числа…
А что делать если у меня строки и числа)
Многое я потеряю если исправлю эту функцию как там показано?
Или может лучше скопировать и добавить еще одну для строк и чисел?
Почему Вы терять что-то должны? И зачем обязательно так привязывать себя именно к тому, чтобы работать в jquery-коде? Почему не использовать «чистый» JS? Как пример:
http://www.jslab.dk/library/Array.unique
А есть ли какой-то способ привязывать объявление, тултипов например, типа такого
$(document).ready(function(){
$(«.bhinted»).easyTooltip();
});
ко вновь добавляемым объектам на странице? Понятно, что можно при привязке ставить флаг на сам объект в виде аттрибута, что он уже имеет это поведение, а на вновь полученный элемент -, не имеющий такого флага – накатывать заново, вызывая опять нечто такое:
$(«.bhinted[!ishinted=true]«).easyTooltip();
Но как это событие вызывать? Есть какой вариант кроме конечно задания таймаута, какой-нибудь, использующий вот этот вариант изменения состояния дерева?
Почитайте пару статей (они не помешают):
Обработка событий для элементов DOM, загружаемых через ajax и Плагин Live Query. В принципе метод live() может в этом помочь, он работает не со всеми событиями правда, но придумать всегда что-нибудь можно…
Подскажите, пожалуйста, как с помощю этого метода можно обработать наведение мышки и наоборот…
Вот эта конструкци не совсем правильно работает.
$(«.pane»).live(‘mouseover’, function(event) {
$(this).children(«.btn-delete»).animate({opacity: «show»}, «slow»);
}).live(‘mouseout’, function() {
$(this).children(«.btn-delete»).animate({opacity: «hide»}, «slow»);
});
А live() зачем? Элемент .pane не изначально в DOM присутствует? Создается?
Имхо, на самом деле гораздо проще использовать hover(over, out) см. тут http://docs.jquery.com/Events/hover#overout
Да, элемент .pane подгружается динамически. В этом вся проблема.
$(function(){ $("<p class='pane'>...1...</p>") .appendTo("body"); $("p.pane") .live("mouseover",function(){ $(this).css("background-color", "#ccc"); }) .live("mouseout",function(){ $(this).css("background-color", ""); }); });– работает без всяких проблем. Может не в live() дело, а дальше, внутри функции. Я вот на простеньком примере проверил – работает.
Кстати, свойство opacity принимает значения от 0 до 1, но никак не «show» или «hide», я сразу-то внимания не обратил…
Черт! И правда работает… Буду разбираться! Спасибо! А на счет – ‘свойство opacity принимает значения от 0 до 1, но никак не “show” или “hide”’. свойства “show” или “hide” нужны для того, что бы ‘появить’ объект который отключен, т.е. ‘display: none’. А если использовать 0 или 1, то работать не будет. Если не ошибаюсь, на вашем сайте и вычитал
А… Да, Maxim, насчет opacity – тут Вы правы, Вы же используете именно в методе animate. Там действительно так
Оставьте отзыв