создание новых элементов с атрибутами данных html5, определенными в DOM - PullRequest
0 голосов
/ 29 марта 2012

Я хочу создать новый элемент с определенными атрибутами данных html5, однако они не отображаются в DOM (в отличие от использования, скажем, .addClass).это намеренное поведение?

это создает элемент без атрибутов data-foo:

-> $("<div>foo</div>").data('foo', 'bar').addClass('class')
=> <div class="class">foo</div>

мне пришлось объявить его в конструкторе

-> $("<div data-foo='bar'>foo</div>").addClass('class')
=> <div class="class" data-foo="bar">foo</div>

не должен ли метод .data работать так же?

1 Ответ

1 голос
/ 29 марта 2012

Отсюда:

4.API данных jQuery никогда не изменяет атрибуты data- * HTML5.

В большинстве случаев .data () и .removeData () по-прежнему предназначены для первоначальной связи данных с элементами DOM в памяти.Обновление атрибутов DOM каждый раз, когда данные были изменены, замедлило бы все без веской причины.Кроме того, даже невозможно сериализовать все типы данных, которые могут быть присоединены к элементу DOM, такие как функции, ссылки на другие элементы DOM или пользовательские объекты JavaScript.

Правило: обновить или удалить данные HTML5.* атрибуты, используйте методы jQuery .attr () или .removeAttr ().

Итак, используйте обычные attr ...

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