Приятная новость для всех поклонников данного фреймворка. В день рождения библиотеки (которой сегодня исполняется уже три года) команда разработчиков объявила о выходе новой версии — 1.3!
Скачать новую версию фреймворка можно по следующим ссылкам:
Прежде всего хочется сказать о новой технологии работы селекторов, которую назвали Sizzle. Среди ее особенностей выделяют быстродействие, которая заявляется на 49% лучше, чем в предыдущей версии фреймворка. В дополнение приводится сравнение с работой селекторов в других библиотеках:
![Работа селекторов](https://habrastorage.org/r/w780q1/getpro/habr/post_images/0a5/a14/0b2/0a5a140b2e47608fc21be3180958d264.jpg)
При этом сама технология была наделена полной самостоятельностью и автономностью, потому может использоваться в дальнейшем авторами других популярных фреймворков.
В новой версии появились так называемые «живые события» — события, которые могут быть определены для всех текущих и последующих элементов:
Смотрим живой пример.
Серьезно была переработана технология обработки событий, которые вошли в новый объект jQuery.Event, нормально функционирующий во всех браузерах. Подробная информация о внесенных изменениях появится чуть позже.
Весь код, отвечающий за инъекцию кода в HTML и работу с DOM (такие как
![Быстродействие инъекции элементов](https://habrastorage.org/r/w780q1/getpro/habr/post_images/5b3/feb/8d3/5b3feb8d3dee8b4061a82137b7e43b99.jpg)
Метод .offset(), вычисляющий положение объектов, теперь тоже обновлен и работает быстрее:
![Быстродействие Offset](https://habrastorage.org/r/w780q1/getpro/habr/post_images/108/af1/e6b/108af1e6b2418e0f34543ea1e14915c0.jpg)
В новой версии используется уникальная технология определения браузера пользователя: вместо использования привычной идентификации через userAgent, jQuery моделирует специфические особенности каждого браузера или пытается вызвать типичную ошибку. Все это собрано в специальный объект jQuery.Support. При этом объект jQuery.browser по прежнему присутствует в библиотеке.
Разработчики просят обратить внимание на ряд изменений, которые могут вызвать ошибки при установке новой версии фреймворка на страницу с кодом под предыдущую версию:
Полный список изменений выложен на официальном сайте плагина.
В ближайшую неделю-две выйдет версия 1.3.1 с фиксами всех найденных багов.
Do more, write less! ;)
UPD: Дописал список критических изменений.
Скачать новую версию фреймворка можно по следующим ссылкам:
- Сжатая версия (54kb)
- Обычная версия (114kb)
Что нового?
Sizzle: новая технология работы селекторов
Прежде всего хочется сказать о новой технологии работы селекторов, которую назвали Sizzle. Среди ее особенностей выделяют быстродействие, которая заявляется на 49% лучше, чем в предыдущей версии фреймворка. В дополнение приводится сравнение с работой селекторов в других библиотеках:
![Работа селекторов](https://habrastorage.org/getpro/habr/post_images/0a5/a14/0b2/0a5a140b2e47608fc21be3180958d264.jpg)
При этом сама технология была наделена полной самостоятельностью и автономностью, потому может использоваться в дальнейшем авторами других популярных фреймворков.
«Живые» события: live events
В новой версии появились так называемые «живые события» — события, которые могут быть определены для всех текущих и последующих элементов:
$("p").live("click", function(){ $(this).after("<p>Another paragraph!</p>"); });
Смотрим живой пример.
Объект событий
Серьезно была переработана технология обработки событий, которые вошли в новый объект jQuery.Event, нормально функционирующий во всех браузерах. Подробная информация о внесенных изменениях появится чуть позже.
Инъекция кода в HTML
Весь код, отвечающий за инъекцию кода в HTML и работу с DOM (такие как
.append()
, .prepend()
, .before()
и т.п.) также был переписан. В результате опять же было увеличено быстродействие данных операций по сравнению с другими библиотеками:![Быстродействие инъекции элементов](https://habrastorage.org/getpro/habr/post_images/5b3/feb/8d3/5b3feb8d3dee8b4061a82137b7e43b99.jpg)
Метод Offset
Метод .offset(), вычисляющий положение объектов, теперь тоже обновлен и работает быстрее:
![Быстродействие Offset](https://habrastorage.org/getpro/habr/post_images/108/af1/e6b/108af1e6b2418e0f34543ea1e14915c0.jpg)
Определение браузера пользователя
В новой версии используется уникальная технология определения браузера пользователя: вместо использования привычной идентификации через userAgent, jQuery моделирует специфические особенности каждого браузера или пытается вызвать типичную ошибку. Все это собрано в специальный объект jQuery.Support. При этом объект jQuery.browser по прежнему присутствует в библиотеке.
Критические изменения
Разработчики просят обратить внимание на ряд изменений, которые могут вызвать ошибки при установке новой версии фреймворка на страницу с кодом под предыдущую версию:
- Символ '@' в селекторе стилей
[@attr]
был удален. Осуждаемый еще с версии 1.2, такой синтаксис больше не работает. Просто уберите@
в своем коде для работы с новой версией. - События в триггерах теперь поднимаются по DOM. Ваши старые обработчики теперь могут случайно фиксировать больше событий, чем нужно.
- Метод
.ready()
больше не ждет, пока будут подгружены все CSS. Для корректной работы необходимо убедиться, что все стили подключены до работы сценариев. .isFunction()
стал проще, диапазон поддерживаемых функций уменьшился (исключены функции, предоставляемые браузерами, такие какalert()
, а также методы DOM, напримерgetAttribute
)- Порядок селекторов стилей вида «a, b, c» может меняться. Браузеры, которые поддерживают querySelectorAll (Safari, Firefox 3.1+, Opera 10+, IE 8+) вернут элементы в том порядке, в котором они расположены в документе, в остальных же порядок может быть отличным. В версии 1.3.х все будет исправленно.
- Триггеры и их обработчики больше не принимают объекты событий в виде массива, теперь их нужно определять напрямую как аргументы.
- Незадокументированная экстра-функция больше не используется в триггерах и их обработчиках.
- jQuery.event.trigger больше не возвращает последним элемент, возвращенный обработчиком. Необходимо воспользоваться объектом jQuery.Event чтобы получить нужное возвращаемое значение (event.result).
- Необходимо удостовериться, что страница работает в нормальном режиме. Отмечены случаи, когда некоторые методы некорректно работали при включенном режиме совместимости (в их числе ошибки в работе селекторов в Сафари).
Полный список изменений выложен на официальном сайте плагина.
В ближайшую неделю-две выйдет версия 1.3.1 с фиксами всех найденных багов.
Do more, write less! ;)
UPD: Дописал список критических изменений.