Estoy tratando de seleccionar todos los elementos que tienen un data-go-toatributo 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 Expressionerror.
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)]"