2016-03-16 7 views
5

So finden Sie alle Elemente mit Attributen, die dem Muster data-foo-bar-* entsprechen, z.Suchen Sie nach einem Element mit einem Attribut, das einem Muster entspricht

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

Mit document.querySelectorAll mit foo-bar-* Muster gibt Fehler:

Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Document': '[data-foo-bar-*]' is not a valid selector.

+2

Mögliches Duplikat von [Find HTML basierend auf Teilattribut] (http://stackoverflow.com/questions/12199008/find-html-based-on-partial-attribute) –

+1

@IvankaTodorova diese Frage ist vollständig [tag: jquery] konzentriert . – Gajus

+0

Dies ist bereits hier beantwortet: http://Stackoverflow.com/a/16791596/4523369 –

Antwort

1

Vielleicht aber mein Versuch hier ist vielleicht nicht der beste Ansatz sein, durch alle DOM-Elemente und der Suche nach diesem speziellen Attribut Iterieren:

function querySelectorPattern(regex, element) { 
    var elements = document.getElementsByTagName(element), 
    found, 
    regexp = new RegExp(regex); 
    for (var i = 0; i < elements.length; i++) { 
    var attributes = elements[i].attributes; 
    for (var k = 0; k < attributes.length; k++) { 
     if(regexp.test(attributes[k].nodeName)) { 
     console.log(elements[i]); 
     } 
    } 
    } 
} 

Und eine schnelle Demo: https://jsfiddle.net/1rsngvy8/

+0

Dies scheint eine geeignete Lösung angesichts der Einschränkungen der DOM API zu sein. – Gajus

Verwandte Themen