jQuery .data () не получает данные- * - PullRequest
10 голосов
/ 28 июня 2011

Я тестирую с 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/

1 Ответ

16 голосов
/ 28 июня 2011

Из документов (я подозреваю, что изменение, упомянутое в 1.6, виновато - вы пытались снять дело, посмотрите на пример lastValue?) :

Атрибуты данных HTML 5

Начиная с jQuery 1.4.3 Атрибуты данных HTML 5 будут автоматически добавлены в объект данных 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";

Каждая попытка преобразовать строку в значение JavaScript (включая логические значения, числа, объекты, массивы и ноль), в противном случае она остается в виде строки.,Чтобы получить атрибут значения в виде строки без какой-либо попытки его преобразования, используйте метод attr ().Когда атрибут data является объектом (начинается с '{') или массивом (начинается с '['), тогда jQuery.parseJSON используется для анализа строки;он должен следовать допустимому синтаксису JSON, включая имена свойств в кавычках.Атрибуты данных извлекаются при первом обращении к свойству данных, а затем более не доступны или не изменены (все значения данных затем сохраняются внутри в jQuery).

Из вышеприведенного спецификация HTML5 :

A атрибут пользовательских данных - это атрибут в пространстве имен, имя которого начинается со строки «data-», имеетхотя бы один символ после дефиса, совместим с XML и не содержит символов в диапазоне от U + 0041 до U + 005A (от буквы LATIN CAPITAL A до буквы LATIN CAPITAL Z).

Все атрибутыЭлементы HTML в документах HTML автоматически переводятся в нижний регистр ASCII, поэтому ограничение на заглавные буквы ASCII не влияет на такие документы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...