219 votos

Seleccionar elementos de atributo con JQuery

Tengo una colección de casillas con ID generado y algunas de ellas tienen un atributo adicional. ¿Es posible utilizar JQuery para comprobar si un elemento tiene un atributo específico? ¿Por ejemplo, puedo comprobar si el siguiente elemento tiene el atributo "myattr"? El valor del atributo puede variar.

<input type="checkbox" id="A" myattr="val_attr">A</input>

Gracias por todas las respuestas. Por ejemplo ¿cómo consigo que una colección de todas las casillas de verificación que tienen este atributo sin verificar uno por uno? ¿Es esto posible?

345voto

Stefan Gehrig Puntos 47227
if ($('#A').attr('myattr')) {
    // attribute exists
} else {
    // attribute does not exist
}

EDITAR:

elsemyattrundefined:

if ($('#A').attr('myattr') !== undefined) {
    // attribute exists
} else {
    // attribute does not exist
}

174voto

cletus Puntos 276888

¿Cómo puede seleccionarlos? Si es así, entonces sí:

$(":checkbox[myattr]")

152voto

Jonathan Bergeron Puntos 1483

Sé que ha sido un tiempo desde que la pregunta fue hecha, pero encontré el cheque para ser más claro así:

if ($("#A").is('[myattr]')) {
    // attribute exists
} else {
    // attribute does not exist
}

(Como encontrado en este sitio aquí)

Documentación sobre puede encontrarse aquí

8voto

bamccaig Puntos 420

En JavaScript,...

null == undefined

...vuelve true*. Es la diferencia entre los == y ===. También, el nombre de undefined puede ser definido (no es una palabra clave como null ) por lo que es mejor desactivar la comprobación de alguna otra manera. La forma más fiable es, probablemente, para comparar el valor de retorno de la typeof operador.

typeof o == "undefined"

Sin embargo, en comparación con null debe trabajar en este caso.

* Suponiendo undefined está en el hecho de indefinido.

3voto

ssps Puntos 31

$("input[attr]").lengthpodría ser una mejor opción.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X