当我jQuery.data
用来更改值时,DOM 中的属性不会改变。但我喜欢当 DOM 中的属性发生变化时,它更容易调试。
那么可以$().attr("data-value")
用来更改数据属性吗?
只是一个小小提琴来表明混合$().attr
并且$().data
不能很好地协同工作:
当我jQuery.data
用来更改值时,DOM 中的属性不会改变。但我喜欢当 DOM 中的属性发生变化时,它更容易调试。
那么可以$().attr("data-value")
用来更改数据属性吗?
只是一个小小提琴来表明混合$().attr
并且$().data
不能很好地协同工作:
该data
函数管理 jQuery 提供的元素的数据缓存,而不是data-*
属性。data
函数和data-*
属性之间的唯一互连是,如果您请求与属性匹配的键,data
它将从属性初始化其信息缓存。data-*
data-*
用于data
设置数据永远不会更新属性data-*
。
使用更新属性很好attr
,你只需要保持一致:要么使用属性(通过attr
)来获取和设置,要么同时用于data
获取和设置,因为它们管理不同的事情。
Usingattr
意味着您实际上是在更新元素上的属性,这意味着您可以使用在选择器等(CSS 和 jQuery)中设置的值,但也意味着您只能获取和设置字符串值。
使用data
意味着您只更新数据缓存,而不是元素,这意味着您不能在选择器等中使用这些值(因为它们没有存储在 DOM 中的任何位置),但意味着您可以获取和设置完整的JavaScript 数据类型的范围。