Ответ 1
Из docs (я подозреваю, что изменение, упомянутое в 1.6, виновато - попытались ли вы удалить этот случай, посмотрите пример lastValue? ):
HTML 5 data-Attributes
Как из jQuery 1.4.3 HTML 5 data- атрибутыбудет автоматически втянут в Объект данных jQuery. Лечение атрибуты со встроенными штрихами были изменен в jQuery 1.6, чтобы соответствовать W3C HTML5 спецификация.
Например, учитывая следующий HTML:
<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
Все следующие jQuery-коды будут работа.
$("div").data("role") === "page"; $("div").data("lastValue") === 43; $("div").data("hidden") === true; $("div").data("options").name === "John";
Каждая попытка сделана для преобразования string для значения JavaScript (это включает в себя булевы, числа, объекты, массивы и null), в противном случае оно остается как строка. Чтобы получить значение атрибут как строка без каких-либо попытайтесь его преобразовать, используйте attr() метод. Когда атрибут data является object (начинается с '{') или массива (начинается с '['), затем jQuery.parseJSON используется для анализа строка; он должен следовать действительным JSON синтаксис, включая цитированное свойство имена. Атрибуты данных вытягиваются в первый раз свойство данных доступа, а затем больше нет доступ или мутация (все значения данных затем сохраняются внутри jQuery).
Из вышеприведенной спецификации HTML5:
A атрибут пользовательских данных - это атрибут без имени, чье имя начинается со строки "data-", имеет менее одного символа после дефиса, совместим с XML и не содержит символов в диапазоне U + 0041 до U + 005A (LATIN CAPITAL ПИСЬМО A LATIN CAPITAL LETTER Z).
Все атрибуты элементов HTML в HTML-документы получают ASCII-нижнюю область автоматически, поэтому ограничение на Заглавные буквы ASCII не влияют таких документов.