• HTML5自定义属性


    自定义属性的出现并非始于HTML5,但HTML5将 data-* 真正合法化。data自定义属性如何操作?有何用途?。

    首先给定一段html代码:

    <div id="div1" data-color="red" data-music={"m":"love","drink":"water"}>This is a div elem!</div>  
    <div id="div2" data-color="yellow">This is a div elem,too!</div>  
    

    注意:
    1. 自定义属性用来存储或操作数据,可读可写,但不会在页面显示;
    2. 属性值可以是普通的字符串(“string”),也可以以json格式或数组来存储;

    $("body").data("foo", 52);  
    $("body").data("bar", { myType: "test", count: 40 });  
    $("body").data({ baz: [ 1, 2, 3 ] });    
    

    1. 通过CSS属性选择器选择特定元素,并为其设置样式:

    div[data-color="red"]{background:red;color:white}  
    div[data-color="yellow"]{background:yellow;color:black}  
    

    浏览器效果:

     

    2. 通过jQuery定义的 data() 方法操作:

    data()方法出现在1.4.3 version后,意在DOM元素上绑定任意类型的数据,避免了循环引用的内存泄漏风险。我们可以在一个元素上设置不同的值,之后获取这些值,其读写操作与attr()或prop()操作属性相似:

    $("#div1").data("color"); //read  
    $("#div1").data("color","orange") //reset  
    $("#div2").data("music",{"sunshine girl"}) //new  
    $("#div2").data("music");
    $("#div1").data("music").drink //read,love  
    

    注意:
    1. 通过data()设置的自定义属性并不会在控制台中可见。
    2. 尽管"data-" 是HTML5才出现的属性,但jquery是通用的,所以,在非HTML5的页面或浏览器里,你仍然可以使用.data(obj)方法来操作"data-*" 数据。

    3. 通过原生JS操作:
    原生JS中 dataset 用来存储data属性值,同 arguments 不是数组类似,dataset 也不是典型意义上的JS对象,而是个DOMStringMap对象,DOMStringMap是HTML5一种新的含有多个名-值对的交互变量。如下:

    var oElem = document.getElementById('div1');  
    oElem.dataset.color   //read  
    oElem.dataset.color = "blue"   //reset  
    oElem.dataset.book = "1984"   //new  
    

    注意,dataset不会将json格式的参数值读取为对象,而是字符串。因此,需要首先将获取的字符串转换为对象,再通过 . 操作符操作。

    eval("("+oElem.dataset.music+")").drink  //water  
    

    当然,由于自定义属性也是属性,也可以通过 getAttribute/setAttribute 或者jQuery中的attr()或prop()方法来操作。

     

  • 相关阅读:
    【20220606】一亩三分地
    【20220601】连岳摘抄
    【20220526】吃里扒外
    【一句日历】2022年6月
    【20220608】连岳摘抄
    【20220604】为了家人
    【20220530】人格就是路的指引
    工作感受月记202206月
    android开发Bad notification posted from package com.suyf.test: Couldn't create icon: StatusBarIcon(icon=Icon(typ=RESOURCE pkg=com.suyf.test id=0x7f0820dd) visible user=0 )解决方法
    Solution 「AGC 020F」Arcs on a Circle
  • 原文地址:https://www.cnblogs.com/mimifeng/p/3371355.html
Copyright © 2020-2023  润新知