element.attributes是否包含自定义数据属性?

时间:2011-04-13 10:56:29

标签: javascript jquery attributes custom-data-attribute

我想知道浏览器是否存在哪些元素存储在属性数组中。

是否所有“data-xxx”属性都是通过“$('#elm')[0] .attributes”找到的?

例如,attributes-collection包含以下所有数据属性:

 <input type="submit" value="Go" data-validation="foo" data-widgetId="bar">

我需要的是一种将所有相关属性从输入[type = submit]移动到带有jQuery的按钮元素的方法。

3 个答案:

答案 0 :(得分:1)

我认为数据属性存在于所有浏览器中,即使在非HTML 5浏览器中它们被忽略

此处有人设法从IE6 Do HTML5 custom data attributes “work” in IE 6?

中的元素中读取它们

@edited answer

刚发现jquery data()适用于html5和非html5浏览器;

http://www.sluniverse.com/ffn/index.php/2011/02/using-html5s-data-attributes-with-jquery/

example of looping through all data attributes;

<input type="text" id="x" data-a="valuea", data-b="valueb" />
$.each($('#x').data(), function(key, value) { 
  console.log('key is', key);
  console.log('value is', value);
});            

prints         

key is a
value is valuea
key is b
value is valueb

答案 1 :(得分:0)

有关.attributes HERE

的浏览器支持信息
    var attrs = $("input[type=submit]")[0].attributes;
    for(var i=0;i<attrs.length;i++) {
        alert(attrs[i].nodeName + " = " + attrs[i].nodeValue);
    }

答案 2 :(得分:0)

目前没有多少浏览器对dataset属性有本机支持,这是访问data-*属性的官方标准方式。这将随着时间的推移而改善,但目前支持使用不够好(请参阅http://caniuse.com/#search=dataset了解更多信息)。

但是,众所周知,所有浏览器都支持data-*作为常规属性。但是在没有dataset属性的情况下,抓住所有data-*属性并不容易。

幸运的是,有一个提供此功能的JQuery插件。有关详细信息,请参阅此处:http://www.orangesoda.net/jquery.dataset.html