2011-04-13 75 views
1

我想知道是否有浏览器一致性元素存储在属性数组中。element.attributes是否包含自定义数据属性?

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

例如确实属性收集包含所有以下数据属性:

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

我需要的是从输入运动的所有相关的属性的方式[类型=提交]对按钮元件与jQuery。

+0

必须阅读本:http://api.jquery.com/attr/ – diEcho 2011-04-13 10:59:31

+0

呀.attr()的岩石,但它并没有给我带键/值对循环一个对象通过。 – Jens 2011-04-13 11:25:53

+0

我更新你的问题。请参阅**编辑**部分..如果它不是你想要的然后删除。 – diEcho 2011-04-13 12:08:05

回答

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); 
    } 
+0

我不明白这是如何回答我的问题。是的,我可以在每个我能想象到的浏览器中像这样测试它,但我问了这个问题,看看有没有人已经这样做过。不过谢谢。 – Jens 2011-04-19 11:06:27

0

不是很多浏览器目前拥有的dataset属性,这是访问data-*属性的官方标准方法的原生支持。这会随着时间的推移而改善,但现在还没有得到足够的支持(详见http://caniuse.com/#search=dataset)。

但是,正如您所知,所有浏览器都可以支持data-*作为常规属性。但是在没有dataset属性的情况下,并不容易获取所有data-*属性。

幸运的是,有一个提供此功能的JQuery插件。在这里看到更多的信息:http://www.orangesoda.net/jquery.dataset.html

1

我认为数据属性存在于所有的浏览器,即使它们在非HTML的情况下忽略5个浏览器

这里有人设法在IE6 Do HTML5 custom data attributes “work” in IE 6?从一个元素阅读

@edited回答

只是发现jquery的数据()与HTML5和非HTML5的browers工程;

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