Esta if
condición es lo que me está dando problemas:
if (div id=myfav has children) {
do something
} else {
do something else
}
Intenté todo lo siguiente:
if ( $('#myfav:hasChildren') ) { do something }
if ( $('#myfav').children() ) { do something }
if ( $('#myfav:empty') ) { do something }
if ( $('#myfav:not(:has(*))') ) { do something }
children().length
debe llamar en lugar de size () por documentos de jQuery aquí: api.jquery.com/sizeEste fragmento determinará si el elemento tiene hijos utilizando el
:parent
selector:Tenga en cuenta que
:parent
también considera un elemento con uno o más nodos de texto como padre.Por lo tanto, los
div
elementos en<div>some text</div>
y<div><span>some text</span></div>
serán considerados padres, pero<div></div>
no lo son.fuente
#myfav
y:parent
en su ejemplo, de lo contrario, el selector no es el mismo que proporcionaría mi respuesta.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").
Otra opción, solo por el gusto de hacerlo, sería:
En realidad, puede ser el más rápido ya que utiliza estrictamente el motor Sizzle y no necesariamente cualquier jQuery, por así decirlo. Aunque podría estar equivocado. Sin embargo, funciona.
fuente
En realidad, hay un método nativo bastante simple para esto:
Tenga en cuenta que esto también incluye nodos de texto simples, por lo que será cierto para a
<div>text</div>
.fuente
$(...)[0] is undefined
Esto puede suceder si#myfav
no se encuentra. Que había prueba la existencia del elemento de primera emparejado antes de aplicar esa condición, es decir:$('#myfav')[0] && $('#myfav')[0].hasChildNodes()
.y si quieres comprobar que div tiene un hijo perticular (por ejemplo,
<p>
usa:fuente
También puede verificar si div tiene hijos específicos o no,
fuente
La forma jQuery
En jQuery, puede usar
$('#id').children().length > 0
para probar si un elemento tiene elementos secundarios.Manifestación
El estilo vainilla JS
Si no desea usar jQuery, puede usar
document.getElementById('id').children.length > 0
para probar si un elemento tiene elementos secundarios.Manifestación
fuente