Просто для справки для тех, кто использует jQuery, атрибуты, начинающиеся с 'data-', могут быть доступны с помощью функции data()
:
<span id='element' data-type='foo' data-sort='bar'></span>
var el = $('#element');
return [el.data('type'), el.data('sort')];
Некоторые браузеры начинают хранить их более продвинутыми способами (локальное хранилище данных?), А другие нет, но, похоже, работает довольно хорошо. Обратите внимание, что валидаторам W3C не нравятся такие атрибуты expando, но я думаю, что есть некоторые предложения, чтобы стандартизировать это, чтобы они действительно проверяли. В прошлый раз, когда я искал лучший способ хранения данных с элементом, используя data-key
, как это было одним из победителей среди профессионалов.
Другой способ, которым я столкнулся, чтобы связать данные с элементом, - это вставить тег сценария непосредственно перед или после элемента, придав ему тип, отличный от text/javascript
, такой как:
<script id="templatedata" type="text/html">
<span>23</span>
<span>Alfred</span> <!-- I'm sure you can get more creative than I'm being here -->
</script>
Это не будет отображаться в браузере, и вы все равно можете получить туда HTML через $('#templatedata').html();
. Это может иметь свои проблемы, поскольку технически это не правильно, но если для вас важна проверка W3C HTML, это может быть жизнеспособным вариантом.