jQuery 1.7
- Опубликовано:
В jQuery 1.7 устранена давняя проблема, проявлявшаяся в неработоспособности селекторов с использованием булевых атрибутов (атрибутов без значения) в браузерах без встроенной поддержки Selectors API (querySelector()
/ querySelectorAll()
). (Таких браузеров, впрочем, осталось немного — IE7 и IE6, но лучше поздно, чем никогда.)
Это усложняло JavaScript-реализацию возможностей HTML5, основанных на таких атрибутах. Например, для автоматической установки фокуса на поле формы приходилось использовать фиктивное значение в виде пустой строки — [autofocus=""]
— или совсем уж некрасивые и небезопасные конструкции вида [autofocus=]
.
Теперь можно делать правильно:
$('[autofocus]').first().focus();
К сожалению, ошибка почему-то устранена не на уровне Sizzle (JavaScript-движка селекторов, используемого в jQuery), а путём переопределения одного из методов Sizzle внутри jQuery. Таким образом, при использовании Sizzle отдельно от jQuery проблема по-прежнему будет проявляться — наглядный пример фундаментально неправильного решения задачи. Обновлено 2012-06-23: ошибка устранена на уровне Sizzle начиная с версии 1.5 (она же используется в jQuery начиная с версии 1.8).
Другие интересные новшества jQuery 1.7:
- новые методы
on()
иoff()
для унифицированного добавления и удаления обработчиков событий; - более чем вдвое (в Opera — в несколько раз) увеличена скорость обработки делегированных событий (
live()
/delegate()
) при использовании простых селекторов видаtag#id.class
; - решены проблемы с HTML5-кодом при вставке HTML-кода, содержащего HTML5-теги, и клонировании элементов, содержащих HTML5-элементы (необходимости в предварительном применении HTML5Shiv это, однако, не отменяет);
- оптимизирован метод
jQuery.data()
, предназначенный для чтения и привязки произвольных данных к элементам. Ранее все атрибуты с префиксомdata-
повторно перебирались при каждой операции чтения данных с помощью методаdata()
.
jQuery 1.7.1 на CDN-хостингах (33 КБ):