Đưa ra một phần tử HTML tùy ý có 0 hoặc nhiều data-*
thuộc tính, làm thế nào người ta có thể truy xuất danh sách các cặp khóa-giá trị cho dữ liệu.
Ví dụ:
<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>
Tôi muốn có thể lấy lập trình này:
{ "id":10, "cat":"toy", "cid":42 }
Sử dụng jQuery (v1.4.3), việc truy cập các bit dữ liệu riêng lẻ bằng cách sử dụng $.data()
rất đơn giản nếu các khóa được biết trước, nhưng không rõ ràng làm thế nào người ta có thể làm như vậy với các bộ dữ liệu tùy ý.
Tôi đang tìm kiếm một giải pháp jQuery 'đơn giản' nếu có, nhưng sẽ không bận tâm đến cách tiếp cận cấp thấp hơn. Tôi đã cố gắng phân tích cú pháp $('#prod').attributes
nhưng sự thiếu javascript-fu của tôi đang làm tôi thất vọng.
cập nhật
customdata làm những gì tôi cần. Tuy nhiên, bao gồm một plugin jQuery chỉ cho một phần chức năng của nó có vẻ như quá mức cần thiết.
Nhãn cầu nguồn giúp tôi sửa mã của riêng mình (và cải thiện javascript-fu).
Đây là giải pháp tôi đã đưa ra:
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;
}
cập nhật 2
Như đã trình bày trong câu trả lời được chấp nhận, giải pháp này không quan trọng bằng jQuery (> = 1.4.4). $('#prod').data()
sẽ trả về dict dữ liệu cần thiết.