2015-05-25 2 views
4

У меня есть HTML следующим образом и вы хотите скрыть элемент с классом roles, если следующие div пуст.как скрыть элемент в классе, если следующий элемент пуст

<b class="roles">heading 1</b> 
<div>...</div> 

<b class="roles">heading 2</b> 
<div></div> 

В этом случае первый заголовок должен отображаться, хотя второй будет скрыт. JQuery Я попытался это следующим образом:

$(document).ready(function(){ 
    $('.roles').next().is(':empty').addClass('hidden'); 
}); 

Вот мой CSS относительно hidden класса:

.hidden { 
    display: none; 
} 

Спасибо за вашу помощь!

+1

Вы пропустили '.' класса' hidden' в CSS – Tushar

ответ

2

Вам нужно зациклиться на всех элементах .roles, чтобы проверить, имеет ли этот отдельный экземпляр пустой текст. Попробуйте это:

$('.roles').each(function() { 
 
    if ($(this).next('div').is(':empty')) 
 
    $(this).addClass('hidden'); 
 
});
.hidden { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<b class="roles">heading 1</b> 
 
<div>Not empty</div> 
 
<b class="roles">heading 2</b> 
 
<div></div>

+0

ах совершенен, я думая о некоторых за цикл, но не мог понять, как заставить его работать, спасибо очень! – Eoin

+0

Без проблем, рад помочь. –

3

для множественных .roles вы, чтобы перебрать каждого из элементов и проверять состояние каждого элемента.

$('.roles').each(function() { 
    if ($(this).next().is(':empty')) { 
     $(this).addClass('hidden'); 
    } 
}); 
2

Вы можете использовать противоположную логику:

$(document).ready(function() { 
    $('div:empty').prev('.roles').addClass('hidden'); 
}); 

Или используя следующий селектор:

$(document).ready(function() { 
    $('.roles + div:empty').prev().addClass('hidden'); 
}); 
Смежные вопросы