当前位置: 首页 > 面试题库 >

使用javascript / jQuery获取data- *属性列表

元阳荣
2023-03-14
问题内容

给定一个具有零个或多个data-*属性的任意HTML元素,如何检索数据的键值对列表。

例如:

<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>

我希望能够以编程方式检索此:

{ "id":10, "cat":"toy", "cid":42 }

使用jQuery(v1.4.3),$.data()如果事先知道键,则使用来访问数据的单个位很简单,但是使用任意数据集如何做到这一点并不明显。

我正在寻找一个“简单的”jQuery解决方案(如果存在),但不介意采用较低级别的方法。我可以尝试解析,$('#prod').attributes但是缺少javascript-fu会让我失望。

更新

customdata可以满足我的需求。但是,仅将jQuery插件的一部分功能包括在内似乎太过分了。

盯上源代码有助于我修复自己的代码(并改进了javascript-fu)。

这是我想出的解决方案:

function getDataAttributes(node) {
    var d = {}, 
        re_dataAttr = /^data\-(.+)$/;

    $.each(node.get(0).attributes, function(index, attr) {
        if (re_dataAttr.test(attr.nodeName)) {
            var key = attr.nodeName.match(re_dataAttr)[1];
            d[key] = attr.nodeValue;
        }
    });

    return d;
}

更新2

如公认的答案所示,该解决方案对于jQuery(> = 1.4.4)而言是微不足道的。$('#prod').data()返回所需的数据字典。


问题答案:

实际上,如果您使用的是jQuery,从版本开始 1.4.3
1.4.4(由于以下注释中提到的错误),data-*通过以下方式支持属性.data()

从jQuery 1.4.3开始,HTML 5 data- 属性将自动插入到jQuery的数据对象中。

请注意,当JavaScript值转换为它们的关联值(包括布尔值,数字,对象,数组和null)时,字符串保持不变。的data-
属性被拉到在第一时间中的数据属性被访问,然后不再访问或突变的(所有数据值然后被存储在内部的jQuery)。

jQuery.fn.data函数将data-对象内的所有属性作为键-值对返回,其中键是属性名后面的一部分,data-值是按照上述规则转换后的属性值。



 类似资料:
  • 本文向大家介绍使用jQuery获取data-的自定义属性,包括了使用jQuery获取data-的自定义属性的使用技巧和注意事项,需要的朋友参考一下 废话少说,先上代码 通过jQuery制作组件,可以轻松获取到我们data-的自定义属性,也可以给data-属性来赋值。 获取: 赋值:

  • 问题内容: 这是使用jQuery获取一个CSS属性的方法: 您如何全部获得?(无需指定,最好采用以下格式,以便以后可以在jQuery中重新应用): 谢谢!! 编辑 我尝试获取的方法在样式表中声明(它们不是内联的)。抱歉,未指定。 问题答案: 使用jQuery属性选择器查看此实时示例

  • 本文向大家介绍JS JQuery获取data-*属性值方法解析,包括了JS JQuery获取data-*属性值方法解析的使用技巧和注意事项,需要的朋友参考一下 下面就详细介绍四种方法获取data-*属性的值 <li id="getId" data-id="122" data-vice-id="11">获取id</li> 需要获取的就是data-id 和 dtat-vice-id的值 一:getAt

  • 问题内容: 我是jquery的新手。我想使用JavaScript或jquery读取jsp页面中的Java属性文件。我对此进行了调查,但并不满意。 我的应用程序是由Struts2,Eclipse Juno和Windows7开发的。这是我的javascript 这是我的属性文件 我想从属性文件中读取 确认 和 警报 框值。那么是否可以使用Ajax或jquery或javascript? 问题答案: 一个

  • 主要内容:jQuery Data 属性,按钮,复选框,可折叠块,可折叠集合,内容,控件组,对话框,增强,域容器,固定工具栏,翻转拨动开关,尾部栏,头部栏,链接,列表,列表项,导航栏,页面,弹窗,单选按钮,选择,滑动块,文本输入框 & 文本输入域jQuery Data 属性 jQuery Mobile 使用 HTML5 data-* 属性来为移动设备创建更具触摸友好性和吸引性的外观。 在下面的参考列表中,粗体显示的值为默认值。 按钮 在1.4 版本以后已废弃。使用 CSS 类 替代。带有 data

  • jQuery Data 属性 jQuery Mobile 使用 HTML5 data-* 属性来为移动设备创建更具触摸友好性和吸引性的外观。 在下面的参考列表中,粗体显示的值为默认值。 按钮 在1.4 版本以后已废弃。使用 CSS 类 替代。带有 data-role="button" 的超链接。button 元素、工具栏中的链接以及 input 字段都会自动渲染成按钮样式,不需要添加 data-r