Это if
условие, которое доставляет мне неприятности:
if (div id=myfav has children) {
do something
} else {
do something else
}
Я попробовал все следующее:
if ( $('#myfav:hasChildren') ) { do something }
if ( $('#myfav').children() ) { do something }
if ( $('#myfav:empty') ) { do something }
if ( $('#myfav:not(:has(*))') ) { do something }
children().length
следует вызывать вместо size () для jQuery-документов здесь: api.jquery.com/sizeЭтот фрагмент определит, есть ли у элемента дочерние элементы, используя
:parent
селектор:Обратите внимание, что
:parent
также считается, что элемент с одним или несколькими текстовыми узлами является родительским.Таким образом,
div
элементы<div>some text</div>
и<div><span>some text</span></div>
каждый будет считаться родительским, но<div></div>
не родительским.источник
#myfav
и:parent
в вашем примере, иначе селектор будет отличаться от того, что предоставил бы мой ответ.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").
Другой вариант, просто так, черт побери:
На самом деле может быть самым быстрым, поскольку он строго использует движок Sizzle, а не обязательно какой-либо JQuery, как это было раньше. Может быть неправильно, хотя. Тем не менее, это работает.
источник
На самом деле есть довольно простой нативный метод для этого:
Обратите внимание, что это также включает в себя простые текстовые узлы, поэтому это будет верно для a
<div>text</div>
.источник
$(...)[0] is undefined
это может произойти, если#myfav
не найден. Я бы проверить существование первого совпавшего элемента до применения этого состояния, то есть:$('#myfav')[0] && $('#myfav')[0].hasChildNodes()
.и если вы хотите проверить, есть ли у div ребята из черепа (например,
<p>
используйте:источник
Вы также можете проверить, есть ли у div конкретные дети или нет,
источник
JQuery способ
В jQuery вы можете использовать,
$('#id').children().length > 0
чтобы проверить, есть ли у элемента дочерние элементы.демонстрация
Ванильный путь JS
Если вы не хотите использовать jQuery, вы можете использовать
document.getElementById('id').children.length > 0
для проверки наличия дочерних элементов.демонстрация
источник