2016-03-16 16 views
5

Jak znaleźć wszystkie elementy, które mają atrybuty pasujące do wzorca data-foo-bar-*, np.Znajdź element, który ma atrybut pasujący do wzorca

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

Korzystanie document.querySelectorAll z foo-bar-* wzór daje błąd:

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

+2

Możliwy duplikat [Znajdź HTML na podstawie częściowego atrybutu] (http://stackoverflow.com/questions/12199008/find-html-based-on-partial- attribute) –

+1

@IvankaTodorova to pytanie jest całkowicie [tag: jquery] . – Gajus

+0

To już odpowiedź: http://stackoverflow.com/a/16791596/4523369 –

Odpowiedz

1

Może iteracja wszystkich elementów DOM i szuka tego konkretnego atrybutu może nie być najlepszym podejściem, ale tutaj jest moje spróbować:

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]); 
     } 
    } 
    } 
} 

I szybkie demo: https://jsfiddle.net/1rsngvy8/

+0

To wydaje się być właściwym rozwiązaniem, biorąc pod uwagę ograniczenia API DOM. – Gajus

Powiązane problemy