2013-04-09 58 views
45

我可以在没有jQuery的情况下访问数据属性吗?无jQuery访问'数据'属性

用jQuery很容易,但是我看不到没有jQuery的地方。

如果我在Google上搜索'没有jQuery',我只能看到jQuery的例子。

这有可能吗?

+1

这是旧的,但它可以让你去:http://html5doctor.com/ html5-custom-data-attributes/ – dsdsdsdsd 2013-04-09 20:53:10

回答

76

here我发现这个例子:

<div id='strawberry-plant' data-fruit='12'></div> 
<script> 
    // 'Getting' data-attributes using getAttribute 
    var plant = document.getElementById('strawberry-plant'); 
    var fruitCount = plant.getAttribute('data-fruit'); // fruitCount = '12' 
    // 'Setting' data-attributes using setAttribute 
    plant.setAttribute('data-fruit', '7'); // Pesky birds 
</script> 

所以看上去非常可行的。

+2

第一个答案+适用于所有浏览器 – user2143356 2013-04-09 21:30:03

+0

这似乎是正确的方法。此外,您可能需要能够执行如下操作:document.getElementById('strawberry-plant')。setAttribute('data-fruit','Some Data Here'); – sage88 2014-03-05 04:56:29

21

您可以使用数据集属性。如:

element = document.getElementById("el"); 
alert(element.dataset.name); // element.dataset.name == data-name 
+6

查看对'dataset'的支持:http://caniuse.com/dataset – 2013-04-09 20:56:29

+3

注意:尽管完全正确,但这只适用于符合HTML5的浏览器。使用'getAttribute'方法可以在大多数浏览器上使用。 – fredrik 2013-04-09 20:59:02

0

我想你可以试试这个:

var ele = document.getElementById("myelement"); 
if (ele.hasOwnProperty("data")) { 
    alert(ele.data); 
} 

或使用

alert(ele['data-property']); 
+0

来自MDN文档,它是理想的使用getAttribute方法,因为它的速度更快,下面我引用:**另外,与将数据存储在JS数据仓库中相比,读取数据属性的性能很差。使用数据集比使用getAttribute()读取数据要慢。** - [link](https://developer.mozilla.org/en/docs/Web/Guide/HTML/Using_data_attributes) – razzbee 2016-10-16 11:20:49