Joomla! Україна

Вийшла нова версія JQuery 1.7

05.11.2011, 02:30  |  Прочитано: 4746 раз  |  jQuery  |  Автор: Денис Носов

Вийшов реліз jQuery 1.7.

Реліз містить багато нововведень та деякі виправлення. Завантаження версії 1.7 доступно з сайту jQuery, а за декілька годин стане доступне для використання через CDN Google або Microsoft.

Пропонуємо ознайомитися з деякими нововведеннями, які ще не описані в офіційному API.

Що нового у версії 1.7?

Новий API подій: .on() і .off()

Новий .on() і .off() API робить універсальним і більш зручним прив'язку до подій у документі.

$(elements).on( events [, selector] [, data], handler );
$(elements).off( [ events ] [, selector] [, handler] );

Коли зазначений selector, те метод .on() працює так само, як і .delegate() — прив'язує обробники події, фільтруючи елементи по селектору. Якщо ж selector не зазначений або рівний null, то виклик працює як звичайний .bind().

Усі існуючі види прив'язок до подій доступні і у версії 1.7, але рекомендується використовувати саме .on() для нових проектів, де гарантовано буде використовуватися версія 1.7 або старше. Нижче наведені невеликі приклади, які демонструють аналогічні прив'язки до подій з використанням старого і нового API:

$('a').bind('click', myhandler);
$('a').on('click', myhandler);

$('form').bind('submit', { val: 42 }, fn);
$('form').on('submit', { val: 42 }, fn);

$(window).unbind('scroll.myplugin');
$(window).off('scroll.myplugin');

$('.comment').delegate('a.add', 'click', addnew);
$('.comment').on('click', 'a.add', addnew);

$('.dialog').undelegate('a', 'click.mydlg');
$('.dialog').off('click.mydlg', 'a');

$('a').live('click', fn);
$(document).on('click', 'a', fn);

$('a').die('click');
$(document).off('click', 'a');

Поліпшена продуктивність делегованих подій (Delegated Events)

Делегування подій (event delegation) здобуває більшу важливість із ростом розміру і складності сторінок. Такі фреймворки, як Backbone і Sproutcore, широко використовують делегування подій. Обробка подій в jQuery 1.7 була перероблена з метою прискорити процес обробки подій, особливо для найпоширеніших випадків.

Поліпшення підтримки HTML 5 в IE 6/7/8

Кожний, хто пробував використовувати нові теги з HTML5, наприклад, такі як <section>, гарантовано мали проблеми не тільки з тим, що IE 6/7/8 не розуміють цих тегів, але ще й зовсім видаляють їх з документу. В jQuery 1.7 є вбудована підтримка тегів HTML5 для старих IE у таких методах, як .html().

Інтуїтивна робота переключення анімації

У попередніх версіях jQuery переключення анімації (.slidetoggle() або .fadetoggle()), не спрацьовувало правильно, якщо кілька анімацій були запущені послідовно і попередня була перервана методом .stop(). Це було виправлено у версії 1.7, тепер перед запуском анімації запам'ятовуються початкові значення, і відбувається скидання значень, якщо переключення анімації було перервано передчасно.

Asynchronous Module Definition (AMD)

Тепер jQuery підтримує асинхронне визначення модуля — AMD API. Це не означає, що jQuery є завантажником скриптів (script loader); jQuery усього лише використовує AMD-сумісну модель визначення модуля, підтримувану, наприклад, RequireJS або curl.js, тому jQuery може бути підключена динамічно таким завантажником, і подія ready також є підконтрольним йому.

jQuery.Deferred

Об'єкт jQuery.Deferred був розширений новими обробниками прогресу і методами повідомлення, що викликає цими оброблювачі. Це дозволяє асинхронно повідомляти слухачів про прогрес виконання без завершення або скасування запиту. Додатково з'явився метод state(), який повертає стан Deferred-Об'єкта, це в першу чергу корисно при налагодженні.

Повний список змін, виправлень багів, тощо читайте в офіційному релізі http://blog.jquery.com/2011/11/03/jquery-1-7-released/

Завантажити jQuery 1.7