javascript - 如何获取所有以某物开头的 HTML 属性(属性名称,*不是*它们的值!)

标签 javascript dom selector

我想获取 HTML 页面中的所有元素/节点,这些元素/节点包含以某物开头的属性(同样,属性名称以某物开头,而不是它们的值!)。例如,TinyMCE 倾向于为其保存的元素添加自定义属性,如 "mce_style""mce_href""mce_bogus"等。我想要类似 CSS3 选择器的属性值,[attr^="mce_"]但不是值,属性名称

当然,我可以遍历所有的DOM节点和它们的属性,并一一检查,但我想知道是否有更有效的方法。

请不要给我特定于 TinyMCE 的答案,我很确定有一个标志会阻止 TinyMCE 保存这些属性,但问题是通用的。

最佳答案

here's a simple demo查找包含以 mce_ 开头的属性的所有元素。可能需要一些改进。

function getMCE() {
    var el, attr, i, j, arr = [],
        reg = new RegExp('^mce_', 'i'),                //case insensitive mce_ pattern
        els = document.body.getElementsByTagName('*'); //get all tags in body

    for (i = 0; i < els.length; i++) {                 //loop through all tags
        el = els[i]                                    //our current element
        attr = el.attributes;                          //its attributes
        dance: for (j = 0; j < attr.length; j++) {     //loop through all attributes
            if (reg.test(attr[j].name)) {              //if an attribute starts with mce_
                arr.push(el);                          //push to collection
                break dance;                           //break this loop
            }
        }
    }
    return arr;
}

console.log(getMCE())​

关于javascript - 如何获取所有以某物开头的 HTML 属性(属性名称,*不是*它们的值!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313312/

相关文章:

javascript - 如何在单独的行上打印对象中的所有键

javascript - react : how to get Material UI's grid spacing to work?

javascript - 如何通过 JavaScript 获取 HTML 阴影元素的尺寸

css - Div 的水平滚动

javascript - 请解释一下这个jquery选择了什么

jQuery 选择 <p> 的 ".html"并删除其中的一些元素?

jquery - 如何使用 jQuery 选择非直接左兄弟 <span> ?

javascript - 当选择新值时,select2 初始值将被替换

javascript - HTML getElementsByClassName 返回长度为 0 的 HTMLCollection

javascript - indexedDB onupgradeneeded 事件永远不会完成