Проверьте, скрыты ли все дочерние элементы

Я немного застрял здесь со своим сценарием:

Его флажок фильтрует все .notme изображения и скрывает его элементы списка. Проблема в том, что теперь я не могу получить рабочую функцию обратного вызова для fadeToggle. Он должен вести себя следующим образом:

Если все дети из #list-team-single-container "не отображаются" - сделайте что-нибудь.

$('#show-only-my-teams').change(function(){
    $('.notme').each(function(){
        $(this).parent().parent().fadeToggle('fast', function(){
        });
    });
}); 

Ответ 1

if($('#list-team-single-container').children(':visible').length == 0) {
   // action when all are hidden
}

Ответ 2

: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, которые видны.

Ответ 3

Трудно быть конкретным, не видя разметки, но я бы подумал о том, чтобы сделать что-то вроде этого:

var isVisible = 0;

$('.notme').each( function() {
    if( $(this).is(":visible") {
         isVisible++;
    }
});

if ( isVisible == 0 )
    // do something