È possibile approssimare qualcosa di simile scorrendo gli attributi per ogni elemento nel contenitore, e di vedere se il nome dell'attributo corrisponde a un'espressione regolare per quello che stai cercando:
Ad esempio, in this jsFiddle, I am looking for li
elements with the data-media-tv
and data-media-dvd
properties.
È possibile personalizzare la regex per restituire solo ciò che si desidera vedere. Vuoi vedere solo gli elementi che hanno un data-media- * (come nella tua domanda)? Here you go.
Tenete a mente che questo non è esattamente scalabile. Poiché stiamo iterando attraverso ogni singolo elemento della pagina e controllando ogni singolo attributo (ma torniamo presto se trovato), questo può e sarà probabilmente lento per le pagine di grandi dimensioni.
Limita questo a SOLO il contenitore che vuoi cercare, o solo gli elementi che vuoi scorrere attraverso! Se lo esegui contro document.body
, itererà attraverso ogni singolo elemento nella pagina, non sarò responsabile se la tua casa dovesse bruciare di conseguenza. :)
Qui è la funzione-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;
};
In elements
, passare solo negli elementi che si desidera controllare, possibilmente selezionato tramite $$
. Se si desidera controllare tutti gli elementi in un elemento del contenitore, sostituire elements
con container
e container.getChildren()
in ogni istanza di element
, sopra.
fonte
2012-09-18 13:50:26
Puoi pubblicare qualche esempio di html? – Daedalus
Sembra che dovrai aggiungere qualche altro attributo per unire gli elementi. – Niemand
Un'implementazione del selettore CSS conforme non produrrebbe * nessun elemento * perché non valido ... – BoltClock