Независимо от атрибута HTML id, есть ли хороший способ определить уникальный идентификатор элемента в JavaScript для использования с локальным хранилищем HTML5?
localStorage.setItem('uniqueid', value);
Может сделать это:
var uid = ancestor.index(element); // uid = 0
localStorage.setItem(namespace + uid, value);
Проблема в том, что при изменении порядка элементов данные не связаны с нужным элементом:
var uid = ancestor.index(element); // another element is prepended, so uid = 1
localStorage.getItem(namespace + uid);
РЕДАКТИРОВАТЬ - реальный пример
HTML код:
<ul>
<li aria-hidden="true">foo</li>
<li>bar</li>
</ul>
JQuery код:
var ul = $('ul');
ul.find('li').each(function() {
var element = $(this),
uid = ul.index(element),
data = JSON.parse(this.storage.getItem(uid));
// load
console.log(data.hidden);
// save
this.$window.bind('unload', function() {
localStorage.setItem(uid, JSON.stringify({
hidden: typeof element.attr('aria-hidden') === 'string',
}));
});
});
Теперь я использую индекс каждого элемента списка для создания уникального идентификатора. Я мог бы установить data-uid с помощью HTML следующим образом:
<li data-uid="foo">foo</li>
Есть ли способ динамически установить уникальный идентификатор?