3

当我jQuery.data用来更改值时,DOM 中的属性不会改变。但我喜欢当 DOM 中的属性发生变化时,它更容易调试。

那么可以$().attr("data-value")用来更改数据属性吗?

只是一个小小提琴来表明混合$().attr并且$().data不能很好地协同工作:

http://jsfiddle.net/AvRJc/

4

1 回答 1

9

data函数管理 jQuery 提供的元素的数据缓存,而不是data-*属性。data函数和data-*属性之间的唯一互连是,如果您请求与属性匹配的键,data它将从属性初始化其信息缓存。data-*data-*

用于data设置数据永远不会更新属性data-*

使用更新属性很好attr,你只需要保持一致:要么使用属性(通过attr)来获取和设置,要么同时用于data获取和设置,因为它们管理不同的事情。

Usingattr意味着您实际上是在更新元素上的属性,这意味着您可以使用在选择器等(CSS 和 jQuery)中设置的值,但也意味着您只能获取和设置字符串值。

使用data意味着您只更新数据缓存,而不是元素,这意味着您不能在选择器等中使用这些值(因为它们没有存储在 DOM 中的任何位置),但意味着您可以获取和设置完整的JavaScript 数据类型的范围。

于 2013-09-17T08:23:48.340 回答