Można zbliżenie coś takiego przez iteracja atrybutów dla każdego elementu w kontenerze, a widząc, czy nazwa atrybutu pasuje regex dla czego szukasz:
Na przykład, in this jsFiddle, I am looking for li
elements with the data-media-tv
and data-media-dvd
properties.
Możesz dopasować wyrażenie regularne, aby zwracać tylko to, co chcesz zobaczyć. Chcesz widzieć tylko te elementy, które mają dane-media- * (jak w twoim pytaniu)? Here you go.
Należy pamiętać, że to nie jest dokładnie to, skalowalne. Ponieważ przechodzimy przez każdy element na stronie i sprawdzamy każdy pojedynczy atrybut (ale wracamy wcześniej, jeśli zostanie znaleziony), może to i będzie prawdopodobnie powolne w przypadku dużych stron.
Ogranicz to do TYLKO kontenera, który chcesz przeszukać, lub tylko te elementy, które chcesz poddać iteracji! Jeśli uruchomisz to przeciwko document.body
, będzie on iterować po każdym elemencie na stronie, nie będę odpowiedzialny za to, czy Twój dom zostanie spalony w wyniku. :)
Tutaj jest funkcja-ized:
function attrMatch(elements, regexp) {
// Iterate through all passed-in elements, return matches
var matches = elements.filter(function(li) {
var numAttr = li.attributes.length;
for(x=0;x<numAttr;x++) {
var attr = li.attributes[x];
return attr['name'].test(regexp);
}
});
return matches;
};
W elements
, przechodzą tylko w elementach, które chcesz sprawdzić, ewentualnie wybrany przez $$
. Jeśli chcesz sprawdzić wszystkie elementy w elemencie kontenera, zamień elements
na container
i container.getChildren()
w każdym wystąpieniu element
powyżej.
Czy możesz zamieścić przykładowy html? – Daedalus
Wygląda na to, że musisz dodać jakiś inny atrybut, aby zjednoczyć elementy. – Niemand
Zgodna implementacja selektora CSS wyprowadziłaby * bez elementów *, ponieważ jest nieważna ... – BoltClock