У меня есть значок «громкость», при нажатии на который звук отключается, а при повторном щелчке - включается. Я использовал .addClass () и .removeClass () для переключения между классами значков. Хотя я могу переключиться с «fa-volume-up» на «fa-volume-off», я не могу сделать наоборот; по какой-то причине он не передает условие «else if» после того, как значок изменился на «громкость выключена».
Я хочу изменить значок с «fa-volume-up» на «fa-volume-off».
// index.js
$(function() {
$('#vol-btn').on('click', function() {
if ($(this).hasClass('fa-volume-up')) {
$(this).removeClass('fa-volume-up').addClass('fa-volume-off');
//sound.mute(true);
console.info("Muting sound.")
// it won't enter this condition!
} else if ($(this).hasClass('fa-volume-off')) {
$(this).removeClass('fa-volume-off').addClass('fa-volume-up');
//sound.mute(false);
console.info("Unmuting sound.")
}
});
})<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" />
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<!--index.html -->
<div class='btns'>
<i id='vol-btn' class = "fa fa-volume-up"></i>
</div>он работает, как ожидалось .. Должна быть какая-то проблема с вашей функцией sound.mute
Может он слишком маленький. i {display:block;padding:8px;cursor:pointer} добавить класс .fa-2x



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


Я согласен с @Derek, что переключение значка имеет больше смысла, а затем использование класса для определения сообщения console.info (что я делаю в тернарном операторе).
// index.js
$(function() {
$('#vol-btn').on('click', function() {
$(this).toggleClass('fa-volume-up fa-volume-off')
$(this).hasClass('fa-volume-off')
? console.info('Muting sound')
: console.info('Unmuting Sound')
})
})#vol-btn:hover {
cursor: pointer;
}<link href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" />
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<!--index.html -->
<div class='btns'>
<i id='vol-btn' class = "fa fa-volume-up fa-2x"></i>
</div>
не будет ли
toggleClassиметь больше смысла в этой ситуации