zoukankan      html  css  js  c++  java
  • 关于data自定义属性

    新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取。它的数量不受限制,并且也能由JavaScript动态修改,也支持CSS选择器进行样式设置。这使得data属性特别灵活,也非常强大。有了这样的属性我们能够更加有序直观的进行数据预设或存储。下面介绍Html5 Dataset 存储的实际应用,以及包括jQuery在内的四种存取方式。

    <span id="music-latch" class="musique"
    
    data-date="2013"
    
    data-genre="Electronic"
    
    data-album="Settle (Deluxe)"
    
    data-artist="Disclosure"
    
    data-composer="Howard Lawrence & Guy Lawrence">
    
    Latch (feat. Sam Smith)
    
    </span>
    

      

    利用 getAttribute、setAttribute 存取 dataset

    作为HTML元素的标签,dataset的存取也服从getAttribute、setAttribute,而且这两个方法兼容性也最广。

    例如对于上面的两个例子,我们可以运行如下代码进行

    //get
    
    var album = document.getElementById("music-latch").getAttribute("data-album");
    
    console.log(album);
    
    //set
    
    document.getElementById("food-pkd").setAttribute("data-en","Beijing Stuffed Duck");

    这样就可以以一种更兼容的方式,来存取dataset数据。所做出的任何更改,都是可以实时反映到元素data属性上的。

    但是这种方法比较低端,如果遇到多个data-*自定义字段,想要一次全部获取所有的data属性并包装成对象的话,还必须做一个循环,很麻烦。不过我们还有Dataset API可用。

    利用 dataset API 存取 dataset

    通过.dataset API,我们可以更方便的获取元素的所有data字段,并以对象的方式,方便存取和遍历。例如,对于上面的例子,可以运行

    //get
    
    var songd = document.getElementById("music-latch").dataset;
    
    var album = songd.album;
    
    console.log(album);
    
    //set
    
    document.getElementById("food-pkd").dataset.en = "Beijing Stuffed Duck";
    
    //add
    
    document.getElementById("food-pkd").dataset.es = "Pato laqueado a la pekinesa";

    利用 jQuery.attr 方法存取 dataset

    jQuery有着出色的兼容性。类似get、setAttribute,jQuery的.attr()方法同样可以用在这样的情况下,例如,对于上面的例子,可以运行

    window.jQuery && (function($){
    
    //get
    
    var album = $("#music-latch").attr("data-album");
    
    console.log(album);
    
    //set
    
    $("#food-pkd").attr("data-en","Beijing Stuffed Duck");
    
    })(window.jQuery);

    利用 jQuery.data 方法存取 dataset

    jQuery从1.4.2版本开始支持$.data()方法来直接访问data属性,同时也不需要写"data-"关键词了,例如,对于上面的例子,可以运行

    window.jQuery && (function($){
    
    //get
    
    var album = $("#music-latch").data("album");
    
    console.log(album);
    
    //set
    
    $("#food-pkd").data("en","Beijing Stuffed Duck");
    
    })(window.jQuery);

    这样的方法也能出色的存取data属性,但是需要注意,jQuery.data对data数据做出的更改,不会反映到HTML元素data属性上。

    也就是说,jQuery现在认为#food-pkd元素的data-en为"Beijing Stuffed Duck",但是在HTML元素上,其值还是没有改变,仍为"Peking Duck":

    window.jQuery && (function($){
    
    //set
    
    $("#food-pkd").data("en","Beijing Stuffed Duck");
    
    console.log( $("#food-pkd").data("en") );
    
    // log: "Beijing Stuffed Duck"
    
    })(window.jQuery);
    
    
    
    console.log( document.getElementById("food-pkd").dataset.en );
    
    // log: "Peking Duck"

    jQuery.data 解析 Dataset 的 JSON 信息

    事实上,jQuery还可以很聪明的从data里提取出json信息转换为对象:

    <span id="song-jsn"
    
    data-meta='{"name":"Latch", "album":"Disclosure", "date":"2013"}'>
    
    Latch (feat. Sam Smith)
    
    </span>
    window.jQuery && (function($){
    
    var jsn = $("#song-jsn").data("meta");
    
    console.log( jsn.album );
    
    // log: "Disclosure"
    
    })(window.jQuery);
  • 相关阅读:
    SqlServer查询所有表名 查询表的所有列名
    IIS控制txt文件的访问
    CHM文件打不开
    [转]VS 2010项目中添加lib库
    SqlServer游标
    [转]_beginthread(), _beginthreadex()与CreateThread()的区别
    jquery radio快速度取值
    linx niginx下php无法创建文件夹及文件
    [转载]无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount
    使用DateGrid的ItemCommand的一点心得
  • 原文地址:https://www.cnblogs.com/qqfontofweb/p/6798214.html
Copyright © 2011-2022 走看看