Ваш текущий if
logi c неверен, так как вы проверяете:
!$('#banner-message').hasClass('tab')
, что означает: если элемент с идентификатором banner-message
не имеет класса tab
, то сделать что-то ...
Одно из решений - проверить, равно ли количество видимых .tab
элементов 0.
Это можно сделать с помощью селектора jQuery: $(".tab:visible")
, это получит все элементы с классом tab
, которые видимы, поэтому, если это равно 0, покажите сообщение.
См. ниже:
$('.tab').click(function() {
$(this).hide();
if ($('.tab:visible').length == 0) {
$('.message').show();
}
})
#banner-message {
border: 1px solid #000;
height: 42px;
width: 70%;
display: flex;
}
.tab {
height: 15px;
padding: 2px 10px;
cursor: pointer;
border: 1px solid red;
margin-right: 10px
}
.message {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="banner-message">
<span class="message">
This is a banner message
</span>
<span class="tab">Close Tab1</span>
<span class="tab">Close Tab2</span>
<span class="tab">Close Tab3</span>
</div>