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

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

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

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

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

person ggzone    schedule 30.04.2012    source источник
comment
Какие-то наценки, как у детей?   -  person John Magnolia    schedule 02.03.2013


Ответы (3)


Возможно, вам нужен селектор :visible jQuery...

Из описания

Элементы считаются видимыми, если они занимают место в документе. Видимые элементы имеют ширину или высоту больше нуля.

Элементы с параметрами visibility: hidden или opacity: 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.

person Lix    schedule 30.04.2012

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

var isVisible = 0;

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

if ( isVisible == 0 )
    // do something
person rgin    schedule 30.04.2012
comment
Возможно, вы захотите реорганизовать свой пример... error не совсем правильный способ представления этой переменной... visibleItems возможно... Присвоение ей имени переменной error немного сбивает с толку. На самом деле ошибки нет... - person Lix; 30.04.2012
comment
Верно, но, на мой взгляд, то, что оно видимое, а не скрытое, является ошибкой в ​​логике, которую я создавал. Итак, ставлю ошибку. знак равно - person rgin; 30.04.2012
comment
Ах! Вот и все - ваши мысли - а как насчет других, которые приходят читать ваш код? Дело в том, что: P - person Lix; 30.04.2012
comment
Я подкуплю вас голосованием, чтобы изменить имя этой переменной ;) Просто скажите спасибо, что я не черный, отправляющий вам письмо с отрицательным голосованием! ха-ха - person Lix; 30.04.2012

person    schedule
comment
Плюс один, но я бы рекомендовал использовать === вместо ==. - person Sablefoste; 30.05.2015
comment
Обратите внимание, что :visible означает, что он занимает место на странице. Если он вложен в скрытые элементы и в данный момент не отображается, он не будет отображаться как :visible. Если вы хотите убедиться, что он не отображается: none, этого может быть недостаточно. - person Rikaelus; 08.02.2016
comment
что, если я проверяю стиль? display: none или display: block? Он не работает ни для кого, но для блока это не так. - person Si8; 01.06.2017
comment
@ Si8 Вы можете проверить атрибут детей (?) - person I try so hard but I cry harder; 02.06.2020