Как написать - Если виден селектор?

Не знаю, как это написать;

Если .sub1 виден, .homepage затухает до .25

Sub1 имеет FadeIn, и я хочу, чтобы непрозрачность домашней страницы упала до 0,25, если sub1 открыт?

У меня есть это;

 $("#cat").click(function(){
 if ($('.sub1').is(':visible') ) {
 $(".homepage").fadeTo(500, .25);}

 else {
 $(".homepage").fadeTo(500, 1);

 }

Реальный веб-сайт, который я создаю > Мокап веб-сайта > Нажатие на категории исчезает в подменю и делает непрозрачность домашней страницы 25%, снова щелкая категории, делает подменю исчезающим. Делая домашнюю страницу 100% ..... Но щелкая категории> Мода> Мужская мода> Смарт, вызывает «Mens Smart Fashion div», но снова щелкая категории, исчезает мужская Умный модный раздел удаляется и возвращает .sub1, но .homepage составляет 100%, а не 25%, когда .sub1 открыт.


person Anthony    schedule 24.09.2011    source источник


Ответы (1)


Вы можете отфильтровать видимые .sub1 и проверить длину, это может быть не так хорошо, если есть несколько .sub1's, возможно, добавить немного специфичности в селектор.

Этот метод отфильтрует элементы с CSS visibility:hidden или opacity: 0 для первых .sub1 (':eq(0)'). Если длина равна 0, условие вернет false.

if($('.sub1:eq(0):visible').length) {
    //.homepage fade to .25
}

Пересмотрено:

$("#cat").click(function(){
    if ($('.sub1').css('opacity') == .25 ) {  

        $('.homepage').fadeTo(500, 1);

    } else {

        $('.homepage').fadeTo(500, .25); 
    }
});

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

person Allen Tellez    schedule 24.09.2011
comment
Эй, спасибо, что ответили, это не касается длины div .sub1, это чисто, если div .sub1 виден, я хочу, чтобы домашняя страница упала до 0,25, и если .sub1 скрыт, то я хочу, тогда .homepage вернемся к 100%, я только что написал это; $(#cat).click(function(){ if ($('.sub1').is(':visible')) { $(.homepage).fadeTo(500, .25);} else { $( .homepage).fadeTo(500, 1);} }); Что, кажется, работает частично, но не возвращает домашнюю страницу на 100% - person Anthony; 24.09.2011
comment
Привет, Tellez, еще раз спасибо за ввод, домашняя страница установлена ​​​​на 100% при загрузке сайта, но при нажатии на #cat открывается div .sub1, и это когда я хочу, чтобы домашняя страница перешла на 25%, чтобы усложнить Более того, в .sub1 есть продукты, и при нажатии на них .homepage исчезает, а страницы продуктов исчезают, но если я открою страницу продукта и снова нажму #cat, домашняя страница будет настроена на Еще раз 100%, поэтому я хотел, чтобы непрозрачность .homepage контролировалась, независимо от того, видимо ли меню sub1 или скрыто. - person Anthony; 24.09.2011
comment
Это должно соответствовать первой части того, что вы ищете. Если вы нажмете на #cat после загрузки страницы, .hoempage исчезнет на 25%. Вторая часть меня немного смущает. - person Allen Tellez; 24.09.2011
comment
Тестирование этого на сайте jquery с помощью firebug, кажется, переключает затухание. - person Allen Tellez; 24.09.2011
comment
Я не уверен, что такое firebug, я новичок в Jquery, поэтому все это для меня ново. В основном, когда .sub1 виден, уберите домашнюю страницу до 25%, когда .sub1 скрыт, верните непрозрачность домашней страницы до 100%. .sub1 скрыт через Jquery, а не CSS, это не имеет никакого эффекта, у меня это не работает, я использую Safari 5.1, домашняя страница не возвращается на 100% - person Anthony; 24.09.2011
comment
и все же, если я поменяю местами числа так, чтобы они были обратными, эффект переключения сработает? - person Anthony; 24.09.2011
comment
Будет ли $(.homepage').fadeTo(500,1); нужна функция обратного вызова? - person Anthony; 24.09.2011
comment
Я думаю, что установка .homepage для скрытия с помощью jquery будет проблемой, потому что это приводит к установке css на .homepage для отображения: none. Когда код пытается перенастроить непрозрачность, дисплей, скорее всего, по-прежнему настроен на display:none. Если вы делаете $('.homepage').show() прямо перед строкой кода $('.homepage').fadeTo(500, 1); вполне может решить проблему. Дайте мне знать, если это работает для вас. - person Allen Tellez; 25.09.2011
comment
Привет, рассказчик, .homepage не настроен на скрытие с помощью Jquery или CSS, он полностью виден при загрузке веб-сайта, для .sub1 установлено значение .hide с помощью Jquery, дополнительный код, который вы упомянули, ничего для меня не сделал, спасибо хотя я действительно ценю ваши усилия, это очень расстраивает. Если я могу и если вы хотите, я приложу файлы сайта, это может показать вам, чего я пытаюсь достичь, но не будет никаких изображений. - person Anthony; 26.09.2011