Подтвердить что ты не робот

JQuery.data() не извлекает данные - *

Я тестирую IE8. Я только что обновил jQuery с v1.5.2 до v1.6.1, и теперь метод данных не работает.

строка выглядит следующим образом:

<tr class="ui-widget-content alt" nodeIndex="2" data-DocAttributeFieldType="TextBox" data-DocClassAttributeFieldId="60777" jQuery16106588245076914028="66">

это работает:

$("#docClassAttributeFields tbody tr:first").attr("data-DocClassAttributeFieldId");

это не работает:

$("#docClassAttributeFields tbody tr:first").data("DocClassAttributeFieldId");

Есть ли в нем ошибка?

Вот пример. Запустите его в 1.5.2, а затем 1.6, чтобы увидеть, как они действуют по-другому... http://jsfiddle.net/5hbKX/

4b9b3361

Ответ 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 не влияют таких документов.