Necesito seleccionar elementos basados en valores almacenados en el .data()
objeto de un elemento . Como mínimo, me gustaría seleccionar propiedades de datos de nivel superior utilizando selectores, tal vez así:
$('a').data("category","music");
$('a:data(category=music)');
O tal vez el selector estaría en formato de selector de atributo regular:
$('a[category=music]');
O en formato de atributo, pero con un especificador para indicar que está en .data()
:
$('a[:category=music]');
He encontrado que la implementación de James Padolsey parece simple, pero buena. Los formatos del selector sobre los métodos espejo que se muestran en esa página. También existe este parche Sizzle .
Por alguna razón, recuerdo haber leído hace un tiempo que jQuery 1.4 incluiría soporte para selectores de valores en el .data()
objeto jquery . Sin embargo, ahora que lo estoy buscando, no puedo encontrarlo. Tal vez fue solo una solicitud de función que vi. ¿Hay soporte para esto y simplemente no lo estoy viendo?
Idealmente, me gustaría admitir subpropiedades en data () usando notación de puntos. Me gusta esto:
$('a').data("user",{name: {first:"Tom",last:"Smith"},username: "tomsmith"});
$('a[:user.name.first=Tom]');
También me gustaría admitir múltiples selectores de datos, donde solo se encuentran elementos con TODOS los selectores de datos especificados. El selector múltiple jquery regular realiza una operación OR. Por ejemplo, $('a.big, a.small')
selecciona a
etiquetas con clase big
o small
). Estoy buscando un AND, tal vez así:
$('a').data("artist",{id: 3281, name: "Madonna"});
$('a').data("category","music");
$('a[:category=music && :artist.name=Madonna]');
Por último, sería genial si los operadores de comparación y las funciones de expresiones regulares estuvieran disponibles en los selectores de datos. Entonces $(a[:artist.id>5000])
sería posible. Me doy cuenta de que probablemente podría hacer mucho de esto usando filter()
, pero sería bueno tener un formato de selector simple.
¿Qué soluciones hay disponibles para hacer esto? ¿Es la mejor solución de Jame's Padolsey en este momento? Mi preocupación se centra principalmente en el rendimiento, pero también en las características adicionales como la notación de puntos de subpropiedad y los selectores de datos múltiples. ¿Hay otras implementaciones que admitan estas cosas o que sean mejores de alguna manera?