Estoy tratando de seleccionar todos los elementos que tienen un data-go-to
atributo que no está vacío.
Lo he intentado, $('[data-go-to!=""]')
pero por extraño que parezca, parece estar seleccionando cada elemento en la página si hago eso.
Respuestas:
tratar
$(':not([data-go-to=""])')
ACTUALIZAR:
Para no desviar a nadie, esta respuesta funcionará en versiones anteriores de jQuery, pero no está preparada para el futuro. Dado que las respuestas de @gmo y @ siva parecen funcionar con versiones posteriores, aplazo (y les animo a que voten a favor) sus respuestas ... y, por supuesto, espero que tengan un día fantástico.
$('element:not([attribute=])'); // gets all of <element attribute="">
o$(':not([attribute=])'); // gets all of <* attribute="">
$('[data-go-to!=""]:[data-go-to]')
hace.
Solo como referencia adicional, y una actualización (may'14) (aug'15) (sep'16) (apr'17) (mar'18) (mar'19) ( may'20 ) ...
Respuesta que funciona con:
Cadenas vacías:
Si debe existir y podría tener algún valor (o ninguno)
attr
jQuery("[href]");
Atributos faltantes:
Si pudiera existir y si existe, debe tener algún valor
attr
jQuery("[href!='']");
O ambos:
Si debe existir y tiene que tener algún valor ...
attr
jQuery("[href!=''][href]");
PD : más combinaciones son posibles ...
jQuery v1.11.0 ->
jsFiddle online testjQuery v2.1.0 ->
jsFiddle online testjQuery v2.1.3 ->
jsFiddle online testjQuery v3.0.0-alpha1 ->
jsFiddle online testjQuery v3.1.1 Slim ->
jsFiddle online test jQuery v3.2.1 ->
jsFiddle online test jQuery v3.3.1 ->
jsFiddle online test jQuery v3.4.1 ->
jsFiddle online test Última versión de jQuery disponible en jsFiddle el 28 de mayo de 2020 jQuery Edge ->
jsFiddle online test Versión de jQuery edge (usar con precaución) * El fragmento está ejecutando jQuery v2.1.1
$(':not([data-go-to=""])')
ya no funciona
$('[data-go-to!=""]:[data-go-to]').each(function() {
// Do Your Stuff
});
Unrecognized Expression
error.
Tiene 'nombre de atributo de datos' y su valor no está vacío:
$('[data-attributename]:not([data-attributename=""])')
Tiene 'nombre de atributo de datos' vacío o no:
$('[data-attributename]')
No estoy seguro de un selector simple, pero podrías usar filter()
:
$('[data-go-to]').filter(
function(){
return ($(this).attr('data-go-to').length > 0);
});
Referencias:
Prueba esto :
$('[data-go-to:not(:empty)]')
"Syntax error, unrecognized expression: [data-go-to:not(:empty)]"