Мне нужно проверить, существует ли <ul>
внутри <li>
, который имеет класс .sub-menu
, и, если это так, добавить класс к тегу привязки внутри тега <a>
над .sub-menu
* 1006.*
Использование jQuery для определения, имеет ли div дочерний элемент с определенным классом
Как определить, есть ли у дочерних элементов в родительском элементе определенный класс?
Выше приведены мои справочные ответы.
Я пытаюсь перебрать каждый список и проверить с помощью .find()
Я не понимаю, как использовать .find()
в цикле илиeach()
функция и как связать ее с ключевым словом this
.
Я также пытался .children()
, но выдает, что children () не является функцией
См. Первый пример ниже.
$(function(e) {
var getMenuItems = $(".item");
for (var i = 0; i < getMenuItems.length; i++) {
if (this.find("ul.sub-menu") !== 0) {
console.log("sub-menu found")
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li class="item">
<a href="#"></a>
<ul class="sub-menu">
<li></li>
</ul>
</li>
<li class="item">
<a href="#"></a>
</li>
<li class="item">
<a href="#"></a>
<ul class="sub-menu">
<li></li>
</ul>
</li>
<li class="item">
<a href="#"></a>
</li>
</ul>
бросает this.find is not a function
- почему?Разве вы не можете использовать this
в .find()
?this
не относится к тому, что я думаю?
Я не понимаю.
Я тоже пытался это сделать:
$(function(e) {
var getMenuItems = $(".item");
for (var i = 0; i < getMenuItems.length; i++) {
if (getMenuItems.find("ul.sub-menu") !== 0) {
console.log("sub-menu found")
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li class="item">
<a href="#"></a>
<ul class="sub-menu">
<li></li>
</ul>
</li>
<li class="item">
<a href="#"></a>
</li>
<li class="item">
<a href="#"></a>
<ul class="sub-menu">
<li></li>
</ul>
</li>
<li class="item">
<a href="#"></a>
</li>
</ul>
Ошибка исчезает, но она регистрируется 4 раза, когда я ожидаю, что это 2. Это потому, что я думаю, что это просто цикл 4 раза?Howcome .find()
не работает в этом примере?Что именно означает this
в этих примерах?Насколько я понимаю, если вы используете this
в цикле, это относится к каждому элементу, через который он проходит.Но я думаю, что это не так.
Что нужно изменить с помощью этого фрагмента кода, чтобы я мог нажать 2 раздела с помощью .sub-menu
и соответственно изменить DOM?