zoukankan      html  css  js  c++  java
  • HTML5新增属性data-*和js/jquery之间的交互

    HTML5新增属性data-*

    data-*自定义属性,这种方式的自定义属性解决属性混乱无状态管理的现状

    书写实例

    <div data-role="page"
    	 data-last-value="43"
    	 data-hidden="true"
    	 data-options='{"name":"John"}'>
    </div>
    

    1. 定义:

    data-* 属性用于存储页面或应用程序的私有自定义数据。
    
    data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。
    

    2. 注意点:

    data-* 属性包括两部分:

    • 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符
    • 属性值可以是任意字符串

    data-*属性和jQuery交互

    使用jQuery中的.data()函数取用data-*属性值

    console.log($("div").data('lastValue'));  //输出的值为:43
    console.log($("div").data('role'));  //输出的值为:page
    

    注意事项

    1. data-**属性名格式驼峰命名改写

    2. data-属性是在第一次使用这个数据属性后不再存取或改变(所有的数据值都在jQuery内部存储)

       演示:
       	console.log($("div").data('lastValue'));  //输出的值为:43
       	$('div').data('lastValue',44);  //设置data-last-value=44
       	$('div')[2]  //假设这是文档中的第3个div,我们输出这个dom
       	//输出:<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'>
      
       别怕,你再输出
       	console.log($("div").data('lastValue'));  //输出的值为:44
       	值只是存储在jQuery内部了
      

    使用jQuery中.attr()函数取用data-*属性值

    console.log($('div').attr('data-role')); //输出的值为:page
    console.log($('div').attr('data-last-value')); //输出的值为:43
    

    使用jQuery中.attr()函数设置data-*属性值

    $('div').attr('data-emp',{'name':'zhangsan','age':23}); //给div添加一个data-emp的属性,属性值为一个json对象
    

    注意:破折号要转化成驼峰命名

    data-*属性和JS交互

    笔者不爱这种方式,但是看到了,就总结整理在这吧

    先准备示例:

    <div id='main'>这种方式总感觉别扭</div>
    
    1. 设置data-*属性

       //首先采用链式编程,再使用DOM元素上有一个dataset属性,这是一个DOMStringMap类型的键值对集合
       document.getElementById('main').dataset.isBoss = true;
       document.getElementById('main').dataset.emp = {'name':'zhangsan',age:23};
      

    结果:

    这种方式总感觉别扭

    这就完成了添加两个data-自定义的属性
    
    1. 读取data-*属性也可以使用dataset这个属性规则是一样的

       console.log(document.getElementById('main').dataset.isBoss); //返回true
      

      除此之外还可以使用JS原生的getAttribute/setAttribute方法

       document.getElementById('main').setAttribute('data-email','chentging@aliyun.com');
       document.getElementById('main').getAttribute('data-email');
      

    最后注意的是CSS中data-是不可以不带的

  • 相关阅读:
    c++ 存储连续性,作用域和链接性注意点
    函数模板的知识点总结
    c++ 左值引用的注意点
    VS2015如何在同一个解决方案下建立多个项目及多个项目之间的引用
    编译opencv4.1.0+tesseract5.0 的Realease x64版本遇见的问题解决
    逻辑化简-卡诺图
    从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 (转载)
    matlab绘图
    多个EXCEL文件合并成一个
    数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)
  • 原文地址:https://www.cnblogs.com/chentging/p/7306460.html
Copyright © 2011-2022 走看看