Ответ 1
if($('#list-team-single-container').children(':visible').length == 0) {
// action when all are hidden
}
Я немного застрял здесь со своим сценарием:
Его флажок фильтрует все .notme
изображения и скрывает его элементы списка. Проблема в том, что теперь я не могу получить рабочую функцию обратного вызова для fadeToggle
. Он должен вести себя следующим образом:
Если все дети из
#list-team-single-container
"не отображаются" - сделайте что-нибудь.
$('#show-only-my-teams').change(function(){
$('.notme').each(function(){
$(this).parent().parent().fadeToggle('fast', function(){
});
});
});
if($('#list-team-single-container').children(':visible').length == 0) {
// action when all are hidden
}
:visible
селектор jQuery может быть тем, что вы ищете...
Из описания
Элементы считаются видимыми, если они потребляют пространство в документе. Видимые элементы имеют ширину или высоту, которая больше нуля.
Элементы с видимостью: скрытые или непрозрачные: 0 считаются видимыми, так как они все еще потребляют пространство в макете. Во время анимаций, которые скрывают элемент, элемент считается видимым до конца анимации. Во время анимации, чтобы показать элемент, этот элемент считается видимым в начале анимации.
http://api.jquery.com/visible-selector/
$('#list-team-single-container').children(':visible');
Эта строка кода вернет все дочерние элементы #list-team-single-container
, которые видны.
$('#list-team-single-container').children(':visible').length;
Эта строка кода вернет количество дочерних элементов из #list-team-single-container
, которые видны.
Трудно быть конкретным, не видя разметки, но я бы подумал о том, чтобы сделать что-то вроде этого:
var isVisible = 0;
$('.notme').each( function() {
if( $(this).is(":visible") {
isVisible++;
}
});
if ( isVisible == 0 )
// do something