Utiliser jQuery pour voir si un div a un enfant avec une certaine classe


114

J'ai un div #popupqui est rempli dynamiquement de plusieurs paragraphes avec la classe .filled-text. J'essaie de faire en sorte que jQuery me dise s'il #popupcontient l'un de ces paragraphes.

J'ai ce code:

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

Aucune suggestion?


1
Cherchez-vous uniquement un enfant ou un descendant (enfant, petit-enfant, arrière petit-enfant, etc.). Le titre de la question dit actuellement "enfant" mais les réponses semblent parler de descendants arbitraires.
hippietrail

À l'époque, je crois que je cherchais spécifiquement un enfant, mais c'est difficile à retenir car cette question a presque 4 ans. Quoi qu'il en soit, la question et la réponse couvrent à la fois les enfants et les descendants, et il y a aussi des réponses qui couvrent spécifiquement les enfants et non les descendants, donc je ne suis pas sûr de ce que vous essayez d'en venir.
Samsquanch

Oh, c'est juste que lorsque vous utilisez un moteur de recherche pour rechercher une question spécifiquement sur la recherche d'un élément avec un enfant correspondant à un sélecteur, c'est celui qu'il trouve.J'aurais donc modifié le titre de la question s'il était inexact pour aider d'autres personnes à trouver la bonne question à l'avenir.
hippietrail

Réponses:




7

Utilisez la fonction enfants de jQuery.

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

$.children('').length renverra le nombre d'éléments enfants qui correspondent au sélecteur.


1
.size()renvoie la même chose que la .lengthpropriété mais est plus lente, vous devez donc la remplacer.
Johannes Klauß

Merci Johnnes de me l'avoir signalé! Je ne le savais pas. Answare mis à jour!
Christopher Ramírez

De rien, mais il y a toujours une erreur. Ce n'est .lengthpas.length()
Johannes Klauß

: PI pensait que c'était une fonction comme la plupart des interfaces jQuery. Une sorte d'incohérence je pense. Mais bon, answare mis à jour une fois de plus: P Merci Johannes.
Christopher Ramírez

La .lengthpropriété ne fait pas partie de la bibliothèque jQuery, c'est juste du javascript natif. Mais oui, cela peut parfois être déroutant.
Johannes Klauß

4

Manière simple

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

2
La méthode .size () est fonctionnellement équivalente à la propriété .length; cependant, la propriété .length est préférée car elle n'a pas la surcharge d'un appel de fonction.
Hitesh Modha

1

S'il s'agit d'un enfant direct, vous pouvez faire comme ci-dessous s'il peut être imbriqué plus profondément, supprimez le>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.