Почему jQuery автоматически анализирует мои атрибуты data- *? - PullRequest
4 голосов
/ 08 сентября 2011

Я только что заметил, что если я попытаюсь прочитать атрибут html5 data-*, используя .data, он будет проанализирован автоматически, тогда как чтение значения с помощью .attr не будет.

data-id="00123456"

Почему это поведение по умолчанию? У меня есть определенные объекты, чьи поля имеют числовые значения в строке, например, «00123456», а не 123456.

Я пропустил заметку jQuery changelog или что?

1 Ответ

7 голосов
/ 08 сентября 2011

Цитата из документации :

Начиная с 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 ().

Похоже, что начиная с jQuery 1.6 метод .data анализирует значения.

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