З огляду на довільний HTML-елемент з нульовим або більше data-*
атрибутами, як можна отримати список пар ключових значень для даних.
Наприклад, з огляду на це:
<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>
Я хотів би мати можливість цього програмно відновити:
{ "id":10, "cat":"toy", "cid":42 }
Використовуючи jQuery (v1.4.3), отримати доступ до окремих бітів даних $.data()
просто, якщо ключі відомі заздалегідь, але не очевидно, як це можна зробити з довільними наборами даних.
Я шукаю "просте" рішення jQuery, якщо воно існує, але я не заперечую проти підходу нижчого рівня в іншому випадку. Я намагався розібратися, $('#prod').attributes
але моя відсутність javascript-фу мене підводить.
оновлення
customdata робить те, що мені потрібно. Однак включення модуля jQuery лише за частину його функціональності здавалося надмірним.
Ейболлінг джерела допоміг мені виправити власний код (і покращив мій JavaScript-фу).
Ось таке рішення, яке я придумав:
function getDataAttributes(node) {
var d = {},
re_dataAttr = /^data\-(.+)$/;
$.each(node.get(0).attributes, function(index, attr) {
if (re_dataAttr.test(attr.nodeName)) {
var key = attr.nodeName.match(re_dataAttr)[1];
d[key] = attr.nodeValue;
}
});
return d;
}
оновлення 2
Як показано у прийнятій відповіді, рішення тривіальне за допомогою jQuery (> = 1.4.4). $('#prod').data()
поверне необхідний диктант даних.