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 КБ):