#javascript #jquery #toggle #children #subdirectory
#javascript #jquery #переключение #дочерние элементы #подкаталог
Вопрос:
Я не эксперт по jQuery, так что вот оно. У меня есть HTML, который выглядит следующим образом:
<ul class="first-class">
<li class="second-class">
<a href="#_">
<i class="fa fa-plus"></i>
</a>
<ul class="subdirectory-class">
<li class="second-class">
<a href="#_">
<i class="fa fa-plus"></i>
</a>
<ul class="subdirectory-class">
<li class="second-class">
<a href="#_">
<i class="fa fa-plus"></i>
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="second-class">
<a href="#_">
<i class="fa fa-plus"></i>
</a>
<ul class="subdirectory-class">
<li class="second-class">
<a href="#_">
<i class="fa fa-plus"></i>
</a>
</li>
</ul>
</li>
</ul>
Итак, что я хотел бы сделать, это нажать знак (fa fa-плюс), чтобы переключить его подкаталог. На данный момент, когда я нажимаю знак , все подкаталоги переключаются.
Как я могу переписать этот код jquery, чтобы достичь этого?
Если я нажму первый знак , должен открыться следующий, и только следующий подкаталог. Затем, когда я нажимаю на подкаталог, должен открыться следующий подкаталог и так далее. Это относится и к заключительной части.
JQUERY в настоящее время у меня есть это:
$(document).ready(function(){
$(".first-class .second-class").click(function(e){
$(".subdirectory-class", this).first().slideToggle("fast");
$(this).children("a").toggleClass("closed open");
e.preventDefault();
});
});
Это скрывает каждый ul, принимающий основной (с отображением css: нет), и когда я нажимаю на него, он переключает все подкаталоги.
Любая помощь была бы очень признательна.
Заранее спасибо
Комментарии:
1. давай начнем с того, что это не главное. Это фиктивные классы
2. @Mamun Я не верю, что должно быть
,
.first-class
— этоul
и.second-class
— это всеli
Ответ №1:
Если вы добавите e.stopImmediatePropagation()
в свой код, он будет выполняться по вашему желанию.
$(document).ready(function() {
$(".second-class").click(function(e) {
$(this).find(".subdirectory-class").first().slideToggle("fast");
$(this).children("a").toggleClass("closed open");
e.stopImmediatePropagation()
});
});
ДЕМОНСТРАЦИЯ
$(document).ready(function() {
$(".second-class").click(function(e) {
$(this).find(".subdirectory-class").first().slideToggle("fast");
$(this).children("a").toggleClass("closed open");
e.stopImmediatePropagation()
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="first-class">
<li class="second-class">
<a href="#_">1
<i class="fa fa-plus"></i>
</a>
<ul class="subdirectory-class">
<li class="second-class">
<a href="#_">11
<i class="fa fa-plus"></i>
</a>
<ul class="subdirectory-class">
<li class="second-class">
<a href="#_">111
<i class="fa fa-plus"></i>
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="second-class">
<a href="#_">2
<i class="fa fa-plus"></i>
</a>
<ul class="subdirectory-class">
<li class="second-class">
<a href="#_">22
<i class="fa fa-plus"></i>
</a>
</li>
</ul>
</li>
</ul>