使用 javascript / jQuery 获取 data-* 属性列表
给定具有零个或多个属性的任意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解决方案(如果存在),但不介意使用较低级别的方法。我尝试过解析,但我缺乏javascript-fu让我失望了。$('#prod').attributes
更新
自定义数据可以满足我的需求。但是,仅针对其功能的一小部分而包含jQuery插件似乎有些过分。
关注源代码帮助我修复了自己的代码(并改进了我的javascript-fu)。
以下是我想出的解决方案:
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()
 
					 
				 
				    		 
				    		 
				    		 
				    		