Devo selezionare gli elementi in base ai valori memorizzati .data()
nell'oggetto di un elemento . Come minimo, vorrei selezionare le proprietà dei dati di livello superiore utilizzando i selettori, forse in questo modo:
$('a').data("category","music");
$('a:data(category=music)');
O forse il selettore dovrebbe essere nel normale formato del selettore di attributi:
$('a[category=music]');
O in formato attributo, ma con un identificatore per indicare che è in .data()
:
$('a[:category=music]');
Ho trovato l'implementazione di James Padolsey semplice, ma buona. Il selettore formatta sopra i metodi mirror mostrati su quella pagina. C'è anche questa patch Sizzle .
Per qualche motivo, ricordo di aver letto qualche tempo fa che jQuery 1.4 avrebbe incluso il supporto per i selettori sui valori .data()
nell'oggetto jquery . Tuttavia, ora che lo sto cercando, non riesco a trovarlo. Forse è stata solo una richiesta di funzionalità che ho visto. C'è supporto per questo e non lo vedo?
Idealmente, vorrei supportare le sotto-proprietà nei dati () usando la notazione a punti. Come questo:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
Vorrei anche supportare più selettori di dati, in cui sono presenti solo elementi con TUTTI i selettori di dati specificati. Il selettore multiplo jquery normale esegue un'operazione OR. Ad esempio, $('a.big, a.small')
seleziona i a
tag con una classe big
o small
). Sto cercando un AND, forse così:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Infine, sarebbe fantastico se gli operatori di confronto e le funzionalità regex fossero disponibili sui selettori di dati. Quindi $(a[:artist.id>5000])
sarebbe possibile. Mi rendo conto che probabilmente avrei potuto fare molto di questo usandofilter()
, ma sarebbe bello avere un semplice formato di selezione.
Quali soluzioni sono disponibili per farlo? Jame's Padolsey è la migliore soluzione in questo momento? La mia preoccupazione riguarda principalmente le prestazioni, ma anche le funzionalità extra come la notazione delle proprietà secondarie e i selettori di dati multipli. Ci sono altre implementazioni che supportano queste cose o sono migliori in qualche modo?