Tengo una colección de casillas de verificación con identificadores generados y algunos de ellos tienen un atributo adicional. ¿Es posible usar JQuery para verificar si un elemento tiene un atributo específico? Por ejemplo, ¿puedo verificar si el siguiente elemento tiene el atributo "myattr"? El valor del atributo puede variar.
<input type="checkbox" id="A" myattr="val_attr">A</input>
Por ejemplo, ¿cómo puedo obtener una colección de todas las casillas de verificación que tienen este atributo sin marcar una por una? es posible?
jquery
attributes
Ciprian Grosu
fuente
fuente
$filtered = $collection.filter('[attribute_name]');
Respuestas:
¿Quieres decir que puedes seleccionarlos? Si es así, entonces sí:
fuente
href
atributos.$("#myBox").find('a').filter(':not([href])')
EDITAR:
Lo anterior caerá en la
else
rama-cuandomyattr
existe pero es una cadena vacía o "0". Si ese es un problema, debes probarlo explícitamenteundefined
:fuente
undefined
se considera un caso marginal y la comparación anterior funcionará en el 99% de todos los casos.Sé que ha pasado mucho tiempo desde que se hizo la pregunta, pero encontré que el cheque es más claro de esta manera:
(Como se encuentra en este sitio aquí )
La documentación sobre se puede encontrar aquí
fuente
Esto funcionará:
fuente
$(this).<something>
cuando puedes hacerlothis.hasAttribute('...')
directamente (y no te interesan los navegadores antiguos, por supuesto).En JavaScript, ...
... devuelve
true
*. Es la diferencia entre==
y===
. Además, el nombreundefined
se puede definir (no es una palabra clave comonull
es), por lo que es mejor verificar de otra manera. La forma más confiable es probablemente comparar el valor de retorno deltypeof
operador.Sin embargo, comparar a nulo debería funcionar en este caso.
* Suponiendo
undefined
que de hecho no está definido.fuente
$("input[attr]").length
Podría ser una mejor opción.fuente
Se lanzaron un par de ideas usando "typeof", jQuery ".is" y ".filter", así que pensé en publicar una comparación rápida de ellas. El typeof parece ser la mejor opción para esto. Si bien los demás funcionarán, parece haber una clara diferencia de rendimiento al invocar la biblioteca jq para este esfuerzo.
fuente
fuente
isset()
o por ejemplo en js$("#element").attr('my_attr') === false
,como en esta publicación , usando
.is
y el selector de atributos[]
, puede agregar fácilmente una función (o prototipo):fuente
fuente
simplemente:
más información: documentos oficiales
fuente
Además de seleccionar todos los elementos con un atributo
$('[someAttribute]')
o$('input[someAttribute]')
también puede usar una función para realizar comprobaciones booleanas en un objeto, como en un controlador de clic:if(! this.hasAttribute('myattr') ) { ...
fuente
He creado el paquete npm con el comportamiento previsto como se describe anteriormente en cuestión.
Enlace a [npm] y [github]
El uso es muy simple. Por ejemplo:
devuelve verdadero
Funciona con camelcase también.
fuente
Para seleccionar elementos que tengan un determinado atributo, consulte las respuestas anteriores.
Para determinar si un elemento jQuery dado tiene un atributo específico, estoy usando un pequeño complemento que devuelve
true
si el primer elemento de la colección ajQuery tiene este atributo:fuente
JQuery devolverá el atributo como una cadena. Por lo tanto, puede verificar la longitud de esa cadena para determinar si está establecida:
fuente