Cette if
condition est ce qui me pose problème:
if (div id=myfav has children) {
do something
} else {
do something else
}
J'ai essayé tout ce qui suit:
if ( $('#myfav:hasChildren') ) { do something }
if ( $('#myfav').children() ) { do something }
if ( $('#myfav:empty') ) { do something }
if ( $('#myfav:not(:has(*))') ) { do something }
children().length
devrait être appelé à la place de size () par les documents jQuery ici: api.jquery.com/sizeCet extrait de code déterminera si l'élément a des enfants à l'aide du
:parent
sélecteur:Notez que
:parent
considère également un élément avec un ou plusieurs nœuds de texte comme un parent.Ainsi, les
div
éléments contenus dans<div>some text</div>
et<div><span>some text</span></div>
seront chacun considérés comme un parent mais<div></div>
ne le sont pas.la source
#myfav
et:parent
dans votre exemple, sinon le sélecteur n'est pas le même que ce que ma réponse fournirait.Additional Notes: Because :parent is a jQuery extension and not part of the CSS specification, queries using :parent cannot take advantage of the performance boost provided by the native DOM querySelectorAll() method. To achieve the best performance when using :parent to select elements, first select the elements using a pure CSS selector, then use .filter(":parent").
Une autre option, juste pour le diable, serait:
Peut-être en fait le plus rapide car il utilise strictement le moteur Sizzle et pas nécessairement n'importe quel jQuery, pour ainsi dire. Cela pourrait être faux cependant. Néanmoins, cela fonctionne.
la source
Il existe en fait une méthode native assez simple pour cela:
Notez que cela inclut également des nœuds de texte simples, ce sera donc le cas pour a
<div>text</div>
.la source
$(...)[0] is undefined
cela peut se produire s'il#myfav
n'est pas trouvé. Je tester l'existence du premier élément adapté avant d'appliquer cette condition, à savoir:$('#myfav')[0] && $('#myfav')[0].hasChildNodes()
.et si vous voulez vérifier que div a un enfant perticulaire (dites
<p>
:la source
Vous pouvez également vérifier si div a des enfants spécifiques ou non,
la source
La manière jQuery
Dans jQuery, vous pouvez utiliser
$('#id').children().length > 0
pour tester si un élément a des enfants.Démo
La façon vanille JS
Si vous ne souhaitez pas utiliser jQuery, vous pouvez utiliser
document.getElementById('id').children.length > 0
pour tester si un élément a des enfants.Démo
la source