2012-05-10 19 views
66

Tengo un div #popup que se llena dinámicamente con varios párrafos con la clase .filled-text. Intento que jQuery me diga si #popup tiene uno de estos párrafos.Usando jQuery para ver si un div tiene un hijo con cierta clase

tengo este código:

$("#text-field").keydown(function(event) { 
    if($('#popup').has('p.filled-text')) { 
     console.log("Found"); 
    } 
}); 

¿Alguna sugerencia?

+0

¿Está buscando sólo para un niño ** ** ** o por cualquier descendiente ** (hijo, nieto, bisnieto, etc.). El título de la pregunta actualmente dice "niño", pero las respuestas parecen hablar de descendientes arbitrarios. – hippietrail

+0

En ese momento, creo que estaba buscando específicamente un niño, pero es difícil recordarlo con certeza ya que esta pregunta tiene casi 4 años. De cualquier manera, la pregunta y la respuesta cubren tanto a niños como a descendientes, y también hay respuestas que cubren específicamente a niños y no a descendientes, por lo que no estoy seguro de a qué intenta llegar. – Samsquanch

+0

Oh, es solo que cuando uso un motor de búsqueda para buscar específicamente un elemento con un niño que coincida con un selector, este es el que encuentra, así que habría ajustado el título de la pregunta si fuera incorrecto para ayudar a otras personas encuentra la pregunta correcta en el futuro – hippietrail

Respuesta

127

Usted puede utilizar la función find:

if($('#popup').find('p.filled-text').length !== 0) 
    // Do Stuff 
+4

Esto realmente funcionó como yo lo necesitaba, pero para referencia 'if ($ ('# popup'). Has ('p.filled-text'). Length! = 0) {' también funciona. – Samsquanch

+6

No hay necesidad de comprobar 0. 0 es un falsey en js. https://developer.mozilla.org/en-US/docs/Glossary/Falsy – ravi

1

Si es un hijo directo que puede hacer de la siguiente manera si se pudiera estar anidada más profundo quitar la>

$("#text-field").keydown(function(event) { 
    if($('#popup>p.filled-text').length !== 0) { 
        console.log("Found"); 
     } 
}); 
26

hay una función

hasClass
if($('#popup p').hasClass('filled-text')) 
5

Utilice la children funcion de j Consulta.

$("#text-field").keydown(function(event) { 
    if($('#popup').children('p.filled-text').length > 0) { 
     console.log("Found"); 
    } 
}); 

$.children('').length devolverá el recuento de elementos secundarios que coinciden con el selector.

+0

'.size()' devuelve lo mismo que la propiedad '.length' pero es más lento, por lo que debe reemplazarlo. –

+0

¡Gracias Johnnes por señalarme eso! No lo sabía. ¡Answare actualizado! –

+0

De nada, pero todavía hay un error. Es '.length' not' .length() ' –

2

manera sencilla

if ($('#text-field > p.filled-text').length != 0) 
+0

¿cuál es la diferencia entre el tamaño() y la longitud? –

+1

El método .size() es funcionalmente equivalente a la propiedad .length; sin embargo, se prefiere la propiedad .length porque no tiene la sobrecarga de una llamada a función. –

+1

ref: http://api.jquery.com/size/ –

Cuestiones relacionadas