使用jQuery获取data-attr值的正确方法

时间:2015-04-26 23:38:43

标签: jquery

一种方式优于另一种方式吗?如果是这样,为什么?或者有更好的方法吗?

var something=$('#something').attr('data-something');
var something=$('#something').data('something');

<p id='something' data-something='hello'>goodby</p>

2 个答案:

答案 0 :(得分:3)

这取决于你想要得到什么,他们会做不同的事情。

.attr('data-something')会为您提供初始值。

.data('something')会为您提供当前值。

如果您使用.data('something', 'goodbye')更改值,则使用attr后会'hello' data'goodbye'将为您label

答案 1 :(得分:1)

.data()通常是一个更有用的函数,因为它可以解析数据类型等。如果您有一个价值为data-something="15"的元素并使用.attr("data-something") + 1为其添加1,那么您将获得151,而如果您使用.data("something") + 1,您将获得16。{ {1}}也可以解析布尔值和JSON。

.data()的一个缺点是,正如@Guffa所说,它实际上并没有修改DOM元素,所以如果你有其他代码在.data()之后读取属性的新值修改它,你应该使用.data()

attr()总体上是一个功能更强大,功能更强大的功能,但是在很多情况下它实际上是有害的,并且应该使用效率较低的.data()

http://api.jquery.com/data/#data-html5