Вийшла нова версія JQuery 1.7
05.11.2011, 02:30 | Прочитано: 6777 раз | jQuery | Автор: Денис Носов Друк | E-mail
Вийшов реліз 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/