Это происходит потому, что вы устанавливаете событие, которое проверяет, содержит ли выбранный элемент определенный класс, и действительно, когда он щелкает по значку, он не будет совпадать, потому что значок не содержит класс, который вы можете решить, спрашивая,также родитель содержит класс ....
window.onclick = function(event) {
if (event.target.matches('.navMenu-button') ||
event.target.parentNode.matches('.navMenu-button')
) {
console.log("it matches...");
}
}
.icon {
background:red;
}
<button class="navMenu-button">this is the button
<div class="icon">this is the icon</div>
</button>
С другой стороны, вы можете ссылаться на событие click, используя метод "onclick", в этом случае оно будет автоматически решено ..
var button = document.querySelectorAll('.navMenu-button')[0];
button.onclick = function() {
console.log("button clicked");
}