Используя jQuery, я добавляю / удаляю класс из своего меню с помощью toggleClass()
Я хочу знать, был ли класс добавлен или удален. Я читал, что есть второе состояние параметра, но, похоже, оно указывает, что нужно только добавлять или удалять, а не возвращать то, что на самом деле было сделано
Мне нужно что-то вроде этого
$el.toggleClass(sidebarCollapsed, addOrRemove);
if (addOrRemove) {
sessionStorage.setItem("sidebarState", "collapsed");
} else {
sessionStorage.setItem("sidebarState", "expanded");
}
Могу ли я сделать это с помощью toggleClass или мне придется проверять класс с помощью hasClass(), а затем соответственно добавлять / удалять?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Короткий ответ на ваш вопрос: нет, метод toggleClass сам по себе не поддерживает эту функцию. Он предназначен только для переключения класса и не имеет обратного вызова, который делает то, что вы хотите.
Как показано в документации, все параметры, которые он принимает, относятся к тому, какой класс переключать: http://api.jquery.com/toggleclass/
Тип возвращаемого значения метода показан как «Returns: jQuery», что указывает на то, что метод возвращает объект / коллекцию jQuery, в отношении которых выполнялись действия. Так вы можете проверить, каков был результат операции, например:
var result = $('div').toggleClass('foo');
console.info('Was the class added? ' + result.hasClass('foo'));
Вы потенциально можете встроить свою логику с помощью троичной системы.
sessionStorage.setItem(
"sidebarState",
$el.toggleClass(sidebarCollapsed).hasClass(sidebarCollapsed) ? "collapsed" : "expanded"
);
Похоже, вы должны добавлять / удалять класс в зависимости от настройки, а не наоборот. т.е. переключить состояние в sessionStorage, а затем обновить класс, используя это.