6

如何使用计划 javascript 或 jQuery 选择每个具有以“data-”开头的属性的元素?

我试过了

 $("[data-*"])

但它不起作用。

4

1 回答 1

5

这是一个非 JQuery 函数,可以满足您的需要:

function getAllDataElements() {
    //get all DOM elements
    var elements = document.getElementsByTagName("*");
    //array to store matches
    var matches = [];
    //loop each element
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];
        //get all attributes for the element and loop them
        var attributes = element.attributes;
        for (var j = 0; j < attributes.length; j++) {
            //get the name of the attribute
            var attr = attributes.item(j).nodeName;
            //check if attibute name starts with "data-"
            if (attr.indexOf("data-") == 0) {
                matches.push(element); //add it to matches
            }
        }
    }
    return matches; //return results
}

可以这样使用:

var results = getAllDataElements();

results.forEach(function (i) {
    i.style.color = "#FF0000";
});

这是一个工作示例

于 2013-09-04T10:36:05.817 回答