javascript - 查找单个元素的所有数据属性

标签 javascript jquery

有人知道从单个元素中获取所有数据属性的快速有效方法吗?我意识到 jQuerys .data() 会这样做,但是它不会给我使用 .attr() 设置的数据属性,除非我首先使用 .data(); 选择数据属性;此外,您不能通过使用 .data() 添加的数据属性来选择元素,这看起来很愚蠢。

html

<div data-foo="bar"></div>

JavaScript

$("div").data();
//returns {foo:bar} good :)

$("div").attr("data-hello","world");
$("div").data()
//returns {foo:bar} no good :(

$("div[data-hello]");
//returns the div, all good :)

$("div").data("find","me");
$("div[data-find]");
//returns nothing, very bad

希望这能解释

最佳答案

您可以使用 dataset现代浏览器中的属性(仅限 IE11+),但您可以增强解决方案以使用 .attributes支持旧浏览器

var $in = $('input'),
    input = $in[0], //here input is a dom element reference
    dataMap = input.dataset;
//if dataset is not supported
if (typeof dataMap == 'undefined') {
    dataMap = {};
    $.each(input.attributes, function (key, attr) {
        var match = attr.name.match(/^data-(.+)/);
        if (match) {
            dataMap[match[0]] = attr.value;
        }
    })
}
$.each(dataMap, function (key, value) {
    console.log(key, value)
})

演示:Fiddle

关于javascript - 查找单个元素的所有数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746615/

相关文章:

javascript - 将 javascript 变量设置为全局变量

javascript - 返回页面时保持 Accordion 选项卡处于事件状态

javascript - jQuery 到 Javascript 添加必需的属性

Javascript正则表达式替换单词但不在大括号内

javascript - 在 FullCalendar 中以 json 形式获取事件错误 : undefined fonction near $ajax

javascript - Web 浏览器中的 SQL 数据库存储 Javascript/HTML5

jquery.dotdotdot 部分未显示

javascript - 修改jQuery插件: Treeview script to expand and collapse function -> exclude area

javascript - 如何使用 Enzyme/Jest 测试 ComponentWillMount 中的逻辑

javascript - 在 css 中暂停特定时间的交互动画