html5元素属性data-*
2014-09-12 10:50
176 查看
html5引入了元素新属性data-*(其中*可以是任意字符),我们可以通过javascript的原生方法setAttribute(data-*,value)方法来给元素设置这样的属性,并且该属性值会显示在dom结点上,同时通过getAttribute()方法来获取这个属性值;
同时,h5引入了dataset来实现属性data-*的读取和设置;
但是,如果通过jQuery或zepto的data()方法来修改元素的data-*属性,我们发现dom元素的那个data-*属性并没有发生变化,并且此时若用dataset或getAttribute方法来获取我们刚刚用jQuery或zepto的data方法设置的data-*属性,还是原来没有修改之前的;
类似,如果先用 jQuery 读取一次,然后再用标准 JavaScript 修改,再用 jQuery 读取第二次,则发现读取的数据仍是修改之前的数据。
可是如果没有经过 jQuery 读取直接用标准 JavaScript 修改,这时再用 jQuery 读取,读到的就是新数据了。
这是因为,标准 JavaScript 直接对 DOM 进行读写(和我们设想的一致),但是 jQuery 不同。jQuery 的内部也维护着一份这些
data 数据。当第一次使用 jQuery 读取时,数据被从 DOM 读到
jQuery 修改时,修改的是内部维护的这个数据,同时再次读取也会从 jQuery 内部而非 DOM 读取数据。jQuery 如此设计的初衷就是为了减少 DOM 读写从而提高性能。
所以我们使用时不要混用原始javascript和jQuery,要么一直用标准 JavaScript,要么一直用 jQuery。
同时,h5引入了dataset来实现属性data-*的读取和设置;
但是,如果通过jQuery或zepto的data()方法来修改元素的data-*属性,我们发现dom元素的那个data-*属性并没有发生变化,并且此时若用dataset或getAttribute方法来获取我们刚刚用jQuery或zepto的data方法设置的data-*属性,还是原来没有修改之前的;
类似,如果先用 jQuery 读取一次,然后再用标准 JavaScript 修改,再用 jQuery 读取第二次,则发现读取的数据仍是修改之前的数据。
可是如果没有经过 jQuery 读取直接用标准 JavaScript 修改,这时再用 jQuery 读取,读到的就是新数据了。
这是因为,标准 JavaScript 直接对 DOM 进行读写(和我们设想的一致),但是 jQuery 不同。jQuery 的内部也维护着一份这些
data 数据。当第一次使用 jQuery 读取时,数据被从 DOM 读到
jQuery.cache保存起来,以后使用
jQuery 修改时,修改的是内部维护的这个数据,同时再次读取也会从 jQuery 内部而非 DOM 读取数据。jQuery 如此设计的初衷就是为了减少 DOM 读写从而提高性能。
所以我们使用时不要混用原始javascript和jQuery,要么一直用标准 JavaScript,要么一直用 jQuery。
相关文章推荐
- 用元素属性存储数据 html5 data
- html5-自定义元素属性data-和content的attr用法
- HTML5元素的 data-* 属性详解
- HTML5的自定义属性data-* 的用法解析
- HTML5中元素的全局属性
- HTML5教程:4.1 新增元素与属性
- HTML5中元素的全局属性
- HTML5 Input 类型,HTML5 表单元素,HTML5 表单属性
- 使用 Razor 生成 HTML5 中的 data- 属性
- HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
- HTML5 data- 属性
- HTML5 data-* 属性
- HTML5 将要移除的元素与属性
- html5的自定义data-*属性和jquery的data()方法的使用
- html5的自定义data-*属性和jquery的data()方法的使用示例
- 自动获取 HTML5 的 data-* 属性
- HTML5学习笔记简明版(10):废弃的元素和属性
- HTML5学习笔记简明版(9):变化的元素和属性
- html5自定义的 data属性
- html5的自定义data-*属性和jquery的data()方法的使用