Usando jQuery estoy generando programáticamente un montón de div
's como este:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
En otro lugar de mi código necesito detectar si existen estos DIV. El nombre de la clase para los divs es el mismo, pero la ID cambia para cada div. ¿Alguna idea de cómo detectarlos usando jQuery?
:first
allí ayudaría al rendimiento (no sé si el rendimiento es un criterio importante para @itgorilla), pero si varía enormemente según el navegador, presumiblemente porque cambia las características nativas que jQuery puede usar para hacer el selección. Aquí hay un caso de prueba donde existe el div , y aquí hay uno donde no existe .if (!$(".mydivclass")[0]){ /* do stuff */ }
Puede usar
size()
, pero jQuery recomienda usar la longitud para evitar la sobrecarga de otra llamada de función:Entonces:
http://api.jquery.com/size/
http://api.jquery.com/length/
ACTUALIZAR
La respuesta seleccionada utiliza una prueba de rendimiento, pero es ligeramente defectuosa ya que también incluye la selección de elementos como parte del rendimiento, que no es lo que se está probando aquí. Aquí hay una prueba de rendimiento actualizada:
http://jsperf.com/check-if-div-exists/3
Mi primera ejecución de la prueba muestra que la recuperación de propiedades es más rápida que la recuperación de índice, aunque IMO es bastante insignificante. Todavía prefiero usar la longitud ya que para mí tiene más sentido la intención del código en lugar de una condición más concisa.
fuente
.length
actualmente ofrece el mejor rendimiento promedio.Sin jQuery:
JavaScript nativo siempre será más rápido. En este caso: (ejemplo)
Si desea verificar si un elemento padre contiene otro elemento con una clase específica, puede usar cualquiera de los siguientes. (ejemplo)
Alternativamente, puede usar el
.contains()
método en el elemento padre. (ejemplo)..y finalmente, si desea verificar si un elemento dado simplemente contiene una determinada clase, use:
fuente
fuente
div
elementos en la página, luego regresar y recorrerlos para ver si tienen esa clase, todo para tirar la matriz al final).hasClass
es 33% más rápido que los otros selectores aquí. Visite jsperf.com/hasclass00div
elementos) que evita el problema que destaqué (construir la matriz). Pruébelo con un montón de divs: jsperf.com/hasclass00/2 Es un 63% más lento en mi copia de Chrome, un 43% más lento en mi copia de Firefox, un 98% (!) Más lento en Opera. Pero además, tiene sentido que sea más lento crear una lista de divs y luego buscarla, en lugar de darle al motor de selección toda la información que necesita.Aquí hay una solución sin usar Jquery
enlace de referencia
fuente
Es bastante simple ...
fuente
Para probar
div
elementos explícitamente:if( $('div.mydivclass').length ){...}
fuente
.mydivclass
dependiendo del navegador y la versión de jQuery.div
parte del selector.El código simple se da a continuación:
Para ocultar el div con la identificación del participante:
fuente
Aquí hay algunas maneras:
Podemos usar cualquiera de las formas definidas anteriormente según el requisito.
fuente
El
size()
método solo devuelve el número de elementos que selecciona el selector jQuery, en este caso el número de elementos con la clasemydivclass
. Si devuelve 0, la expresión es falsa y, por lo tanto, no hay ninguno, y si devuelve cualquier otro número, los divs deben existir.fuente
length
propiedad? Además, esto busca cualquier elemento con esa clase, no solo undiv
. (Ahora, eso puede ser lo que el OP quiso decir, incluso si no fue lo que dijo). Vea la respuesta de Stefan Kendall que hace lo que el OP realmente dijo (aunque, de nuevo, pueden haber significado lo que usted ha hecho).div
parte, por dos razones: 1) el selector no está tan limitado al hecho de que OP usa undiv
elemento (podría cambiar en el futuro), y 2) en La mayoría de los navegadores y versiones de jQuery, AFAIK, esto debería ser más rápido.length
propiedad está ahí, ¿por qué no usarla? Pero si es su preferencia, justo 'nuff. Por otro lado, no sabía que lo había editado. Si fuera a hacer eso, lo habría dejado (nuevamente, él dijo específicamente "... si div con ..." (mi énfasis) y luego mencionó adicionalmente que si no importaba si fuediv
o no, podrías deshacerte de esa parte. Pero lo que sea. :-)size()
método está ahí para dejar en claro que estás contando el número de elementos en un selector jQuery, y no cualquier matriz antigua. Pero de nuevo, esa es solo mi preferencia.verificar si el div existe con cierta clase
fuente
fuente
fuente
En Jquery puedes usarlo así.
Con JavaScript
fuente
Aquí hay una solución de muestra para check class (hasClass) en Javascript:
fuente
La mejor manera en Javascript:
fuente
if ($ ("# myid1"). hasClass ("mydivclass")) {// Hacer cualquier cosa}
fuente
Use esto para buscar en toda la página
fuente