一种方式优于另一种方式吗?如果是这样,为什么?或者有更好的方法吗?
var something=$('#something').attr('data-something');
var something=$('#something').data('something');
<p id='something' data-something='hello'>goodby</p>
答案 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()
。