4.4 元素中的存储自定义数据

data([key],[value])

在元素上存放数据,返回jQuery对象。

  1. key String
  2. 存储的数据名.
  3. key,value String,Any
  4. key:存储的数据名
  5. value:将要存储的任意数据
  6. obj object
  7. 为集合中的每个元素添加键/值对对象数据

data() 方法语义(1)

data([key],[value])

使用jQuery方法为集合中的所有元素添加传递的数据。

  • 不区分驼峰命名法的变量名字大小写,与虚线和横线链接的名字一样对待

    $('.class').data('lastValue') 等价于 $('.class').data('last-value')
  • attr() 方法保存字符串不同,data() 可以保存数据的类型。

例子,使用 attr()data() 方法会获取不同的值

  1. <input id="name" name="name" data-mandatory="true" />
  2. console.log(typeof $('#name').attr('data-mandatory')); //string
  3. console.log(typeof $('#name').data('mandatory')); //boolean

undefined不会作为一个值对待,但仍返回一个Jquery对象。

data() 方法语义(2)

data(object)

为集合中每个元素添加键-值对对象数据。

jQuery.data()(或等价$.data())属于低级别方法,是DOM元素操作,而不是jQuery对象。

便于理解他们的不同,假设有个ID 为 book 的元素,想使用 $.data() 方法存储:

  1. $.data(document.getElementById('book'),'price',10);
  2. //使用data()这样写
  3. $('#book').data('price',10);

data([name]) 方法语义(3)

data([name])

使用指定的名称来查询存储的数据或者HTML5 data-* 属性。

返回

返回查找的数据,没找到返回 undefined

data()方法作为读取器的过程:

如果没有找到之前存储的数据,会使用给定名字查找HTML元素的 data-* 属性。一旦找到 data-* 值,此方法会把这个值存储在jQuery管理的存储区。因此,即使使用 attr() 修改了属性值,任意后续的方法调用也不会再从属性中查找数据值,因为这些数据已经存储在jQuery内存中。弱没有找到,返回 undefined。

例子:

  1. <input id="level1" type="text" value="I'm a text!" data-custom="foo" />
  2. <script>
  3. console.log($('#level1').data('custom')); //foo
  4. console.log($('#level1').attr('data-custom')); //foo
  5. $('#level1').attr('data-custom', 'new value'); //更新属性值,但是没有更新$('#level1').data('custom')的值
  6. console.log($('#level1').data('custom')); //foo
  7. console.log($('#level1').attr('data-custom')); //new value
  8. //这里来更新data
  9. $('#level1').data('custom', 'new value'); //更新 $('#level1').data('custom')的值
  10. console.log($('#level1').data('custom')); //这里是 :new value
  11. </script>

removeData() 方法语法

  1. removeData([name|list])
  2. 在元素上移除存放的数据,参数可以是数组,也可以是以空格分割的名称。没有参数,表示删除所有值。
  3. [name] String
  4. 存储的数据名
  5. [list] Array,String
  6. 移除数组或以空格分开的字符串

例子:

删除所有

  1. $('#name').removeData();

删除foo和bar数据,

  1. $('#name').removeData(['foo','bar']);

或者

  1. $('#name').removeData('foo bar');

jQuery.hasData() 方法语法

  1. `jQuery.hasData(element)`
  2. 确定元素是否包含相关的数据。
  3. 参数
  4. element(Element) 要检查的DOM元素

例子:

  1. $.hasData(document.getElementById('name')); // 返回false,表明此元素没有存储数据
  2. $.data(document.getElementById('name'),'count',10);
  3. $.hasData(document.getElementById('name')); //返回true

4.自定义数据《jquery实战》的更多相关文章

  1. jQuery 实战读书笔记之第四章:使用特性、属性和数据

    使用属性 /* 每个元素都有一或多个特性,,这些特性的用途是给出相应元素或其内容的附加信息.(出自 JavaScript 高级程序设计) */ /* 特性是固有的 JavaScript 对象 属性指的 ...

  2. 使用 data-* 属性来嵌入自定义数据

    1. HTML 实例 <ul> <li data-animal-type="bird">Owl</li> <li data-animal- ...

  3. jquery实战---标签页效果

    在前面的博客中,小编主要简单的介绍了jquery的一些基本知识,今天这篇博文,小编继续来学习jquery的相关知识,今天我们来学习一个标签页的小例子,相关源码小编已经上传,有需要的小伙伴可以自己去下载 ...

  4. jquery实战第一讲---概述及其入门实例

    就在5月28号周四下午五点的时候,接到xxx姐姐的电话,您是xxx吗?准备一下,周五上午八点半去远洋面试,一路风尘仆仆,颠颠簸簸,由于小编晕车,带着晕晕乎乎的脑子,小编就稀里糊涂的去面试了,温馨提醒, ...

  5. JQuery实战---初识JQuery+入门实例

    JQuery在小编的世界中,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库,百度百科对JQuery的介绍比较详细,小伙伴可以东东自己可耐的小爪子,上网进行搜索,说 ...

  6. 大数据开发实战:Hive表DDL和DML

    1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS]  table_name [ (col_nam ...

  7. 大数据开发实战:MapReduce内部原理实践

    下面结合具体的例子详述MapReduce的工作原理和过程. 以统计一个大文件中各个单词的出现次数为例来讲述,假设本文用到输入文件有以下两个: 文件1: big data offline data on ...

  8. 判断数据库内容,在页面显示自定义数据case when

    判断数据库内容,在页面显示自定义数据 case when...then ...else...end 比如:数据库内容是这样: 通过sql语句判断,数据库的name字段,内容是月桂的,显示嫦娥,其他的显 ...

  9. 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第十一讲Hadoop图文训练课程:MapReduce的原理机制和流程图剖析

    这一讲我们主要剖析MapReduce的原理机制和流程. “云计算分布式大数据Hadoop实战高手之路”之完整发布目录 云计算分布式大数据实战技术Hadoop交流群:312494188,每天都会在群中发 ...

随机推荐

  1. 通过.json()将服务器返回的字符串转换成字典

  2. 【Java并发编程】之十四:图文讲述同步的另一个重要功能:内存可见性

    加锁(synchronized同步)的功能不仅仅局限于互斥行为,同时还存在另外一个重要的方面:内存可见性.我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且还希望确保当一个线程 ...

  3. MT【194】又见和式变换

    (2007浙江省赛B卷最后一题)设$\sum\limits_{i=1}^{n}{x_i}=1,x_i>0,$求证:$n\sum\limits_{i=1}^n{x_i^2}-\sum\limits ...

  4. springboot整合mybatis中的mapper不影响使用,但是总是提示红线

    解决方案: 如图:

  5. String的用法------程序猿的双十一

    小感慨:我就静静的写着代码玩,度过一年一度的双十一,今晚就更新进度,整理笔记. package com.mon11.day10; import static org.junit.Assert.*; i ...

  6. 数据结构(三)串---KMP模式匹配算法之获取next数组

    (一)获取模式串T的next数组值 1.回顾 我们所知道的KMP算法next数组的作用 next[j]表示当前模式串T的j下标对目标串S的i值失配时,我们应该使用模式串的下标为next[j]接着去和目 ...

  7. js调试系列: 初识控制台

    写在最开头:其实我以前就在考虑要不要写这个东西,因为这个东西确实不难,但是为什么会有这么多人问,他们问的不是怎么用控制台,而是不知道控制台能干嘛,他们也知道有 console.log 之类的东西,但他 ...

  8. [转载]必须Mark!最佳HTML5应用开发工具推荐

    http://www.csdn.net/article/2014-04-25/2819503-10-html5-tools-worth-checking-out/2 摘要:HTML5自诞生以来,作为新 ...

  9. 基于canvas将图片转化成字符画

    字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢?HTML5让这个可能变成了现实,通过canvas,可以很轻松实现这个功能.其实原理很简单:扫描图片相应位置的像素点,再计算出其灰度值,根 ...

  10. ASP.NET实现二维码(QRCode)的创建和读取

    一.项目引用QRCode的DLL文件(ThoughtWorks.QRCode.dll)   二.ASPX页面(两个jquery的js文件请自行去官网下载):   [html]  <html xm ...