2013-09-17 4 views
2

Когда я использую jQuery.data для изменения значения, атрибут в DOM не изменяется. Но мне нравится, когда изменяется атрибут в DOM, его намного проще отлаживать.

Так можно использовать $().attr("data-value") для изменения атрибутов данных?

Просто немного скрипки, чтобы показать, что смешивание $().attr и $().data не будет хорошо работать вместе:

http://jsfiddle.net/AvRJc/

+0

При использовании '.data()' данные хранятся во внутренней структуре данных в jQuery, поэтому смешивание этих 2 не работает. –

+1

Это '$(). Data' считывает начальное значение атрибутов data- * это просто удобная функция. Используйте все, что хотите, до тех пор, пока вы согласны. –

ответ

6

data функция управляет кэшем данных для элемента, который обеспечивает JQuery, не data-* атрибутов. Только взаимосвязь между data функции и data-* атрибутами в том, что data будет инициализировать кэш информации из data-* атрибутов, если вы запрашиваете ключ, соответствующий атрибут data-*.

Использование data до набор данные никогда не будут обновлены атрибутом data-*.

Это хорошо использовать attr для обновления атрибута, вам просто нужно быть последовательным: либо использовать атрибут (через attr) как для получения и установки, или использование data как для получения и установки, так как они управлять разными вещами.

Использование attr означает, что вы действительно обновляете атрибут элемента, что означает, что вы можете использовать значения, заданные в селекторах и т. Д. (Как CSS, так и jQuery), но также означает, что вы ограничены получением и установкой только строки значения.

Использование data означает, что вы только обновление кэша данных, а не элемент, а значит, вы не можете использовать эти значения селекторов и такие (потому что они нигде не хранятся в DOM), а значит вы можете получить и установить полный диапазон типов данных JavaScript.

Смежные вопросы