проблема в том, что категория даже после SlideUp остается такой же
class="cat-item cat-item-69 cat-parent opened"
вместо возврата в исходное состояние
class="cat-item cat-item-69 cat-parent"
Я сам пытаюсь выяснить причину, но у меня слишком мало опыта работы с js, поэтому довольно сложно разобраться.
теперь, если вы удалите "!"
из
$catParent.toggleClass('opened', !state);
изображение вообще перестанет двигаться, так как не изменит состояние.
отредактированный ответ ниже
Хорошо, я разгадал загадку
После небольшого количества проб и ошибок у меня есть ваш ответ. В вашем коде у вас есть это:
var $catParent = $(this).closest('li.cat-parent');
var state = $catParent.hasClass('close');
$catParent.toggleClass('opened', !state);
эта часть кода устанавливает начальное состояние "закрыть"
var state = $catParent.hasClass('close');
и при нажатии вы получаете состояние "открыто" с помощью
$catParent.toggleClass('opened', !state);
Это не дает вам возможность вернуться к исходному состоянию по щелчку, так как "открытое" состояние установлено как важное с восклицательным знаком.
Теперь, если вы редактируете свой код, установите два состояния переменных как открытое и закрытое. и затем оставьте toggleClass, чтобы переключаться между состояниями, в которых вы получаете желаемый результат. Я не уверен, что мое объяснение верно, но вот код, который вам нужен.
Я уже проверил это, и я использую это на веб-странице Я управляю, если вы хотите, вы можете проверить это
// 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 > .cat-menu-close", function(e) {
var $catParent = $(this).closest('li.cat-parent');
var state = 'close'
var state = 'opened'
$catParent.toggleClass(state);
$(this).nextAll('ul.children:first').slideToggle(state);