Esta ifcondició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().lengthdebe llamar en lugar de size () por documentos de jQuery aquí: api.jquery.com/sizeEste fragmento determinará si el elemento tiene hijos utilizando el
:parentselector:Tenga en cuenta que
:parenttambién considera un elemento con uno o más nodos de texto como padre.Por lo tanto, los
divelementos en<div>some text</div>y<div><span>some text</span></div>serán considerados padres, pero<div></div>no lo son.fuente
#myfavy:parenten 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 undefinedEsto puede suceder si#myfavno 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 > 0para 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 > 0para probar si un elemento tiene elementos secundarios.Manifestación
fuente