Расширяемый аккордеон, он может скользить вниз, но не скользить вверх
Вот код, кто-то может помочь изменить?
(function($){
$(document).ready(function() {
// Categories menu opening
// Categories menu opening
$('.woocommerce.widget_product_categories .product-categories li.cat-parent').prepend('<div class="cat-menu-close"></div>');
$( document ).on( "click", ".woocommerce.widget_product_categories .product-categories li.cat-parent:not(.opened) > .cat-menu-close", function(e) {
$(this).parent().addClass('opened');
$(this).next().next('ul.children').slideDown();
});
}) (jQuery);
Может кто-нибудь помочь мне изменить
1 ответ
Решение
Чтобы "переключить" видимость элемента с эффектом скольжения, вы можете использовать slideToggle
,
Обратите внимание, что вам нужно удалить:not(.opened)
из селектора, потому что обработчик не будет работать, когда этот родительский элемент имеет этот класс.
$(document).on("click", ".woocommerce.widget_product_categories .product-categories li.cat-parent > .cat-menu-close", function(e) {
var $catParent = $(this).closest('li.cat-parent');
var state = $catParent.hasClass('close');
$catParent.toggleClass('opened', !state);
$(this).nextAll('ul.children:first').slideToggle(state);
});
.cat-menu-close {
cursor: pointer;
}
ul {
list-style: none;
}
ul.children {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="woocommerce widget_product_categories">
<div class="product-categories">
<ul>
<li class="cat-parent">
<span class="cat-menu-close">
<button>Expand/collapse</button>
</span>
<div>Random sibling element</div>
<ul class="children">
<li>Child item</li>
<li>Child item</li>
<li>Child item</li>
</ul>
</li>
</ul>
</div>
</div>