Ten if
warunek sprawia mi kłopoty:
if (div id=myfav has children) {
do something
} else {
do something else
}
Próbowałem wszystkich następujących czynności:
if ( $('#myfav:hasChildren') ) { do something }
if ( $('#myfav').children() ) { do something }
if ( $('#myfav:empty') ) { do something }
if ( $('#myfav:not(:has(*))') ) { do something }
children().length
powinien być wywoływany zamiast size () według jQuery docs tutaj: api.jquery.com/sizeTen fragment określi, czy element ma dzieci za pomocą
:parent
selektora:Zauważ, że
:parent
również element z jednym lub więcej węzłami tekstowymi uważa za element nadrzędny.Zatem
div
elementy w<div>some text</div>
i<div><span>some text</span></div>
każdy będzie uważany za rodzica, ale<div></div>
nie jest rodzicem.źródło
#myfav
i:parent
w swoim przykładzie, w przeciwnym razie selektor nie będzie taki sam, jak moja odpowiedź.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").
Inną opcją, po prostu do cholery, byłoby:
Może faktycznie być najszybszy, ponieważ ściśle wykorzystuje silnik Sizzle, a niekoniecznie jakikolwiek jQuery. Może się mylić. Niemniej jednak działa.
źródło
Istnieje właściwie dość prosta metoda natywna:
Zauważ, że obejmuje to również proste węzły tekstowe, więc będzie to prawdą dla
<div>text</div>
.źródło
$(...)[0] is undefined
może się to zdarzyć, jeśli#myfav
nie zostanie znalezione. Sprawdziłbym istnienie pierwszego dopasowanego elementu przed zastosowaniem tego warunku, tj$('#myfav')[0] && $('#myfav')[0].hasChildNodes()
. : .a jeśli chcesz sprawdzić, div ma okołoporodowe dzieci (powiedz
<p>
użyj:źródło
Możesz także sprawdzić, czy div ma określone dzieci, czy nie,
źródło
Sposób jQuery
W jQuery możesz użyć
$('#id').children().length > 0
do sprawdzenia, czy element ma dzieci.Próbny
Waniliowy sposób JS
Jeśli nie chcesz używać jQuery, możesz użyć
document.getElementById('id').children.length > 0
do sprawdzenia, czy element ma dzieci.Próbny
źródło