Исчезать все вложенные div - PullRequest
1 голос
/ 19 ноября 2011

На своей странице я пытаюсь сделать что-то вроде этого: допустим, когда мы нажимаем на какую-то ссылку с идентификатором min_reg, она анимирует элемент div с идентификатором ftr_form_cntr и показывает еще один элемент div tcr_form_cntr внутри. Есть 3-4 ссылки, которые выполняют ту же функцию, но показывают другой div в пределах ftr_form_cntr. Хорошо, если пользователь нажал одну из этих ссылок в первый раз, то проблем нет. Но если пользователь уже нажал (я имею в виду, если ftr_form_cntr уже открыт), я хочу просто fadeOut все существующие div, вложенные в ftr_form_cntr и переходить в один другой div (или менять существующий div на другой).

Посмотрите на эту строку tcr_form_cntr.fadeIn(1000); Что мне нужно сделать перед тем, как эта строка исчезнет со всех вложенных элементов div?

Моя функция выглядит так

$(min_reg).click(function () {
    if($(ftr_form_cntr).hasClass('opened')){  
        $(ftr_form_cntr)...<fadeOut all nested divs>
        tcr_form_cntr.fadeIn(1000);
        return;
    }
    ftr_form_cntr.show().stop(true, true).animate({
        height:"170"
    },1000).addClass('opened');
    tcr_form_cntr.fadeIn(1000);
});

Ответы [ 2 ]

3 голосов
/ 19 ноября 2011

Предполагая, что ftr_form_cntr является строковой переменной, содержащей селектор jQuery для вашего элемента контейнера, вы можете выбрать все элементы div внутри и затемнить их следующим образом:

$(ftr_form_cntr + " div").fadeOut();

Взгляните на документацию jQuery по селекторам , в частности "потомок селектора" .

Если ftr_form_cntr не является строковой переменной, но фактически является, скажем, ссылкой на элемент DOM или чем-то еще, тогда другой способ выбора определенных вложенных элементов - это использование метода .find(), который получает потомки элементов в вашем существующем объекте jQuery в соответствии с другим указанным вами селектором:

$(ftr_form_cntr).find("div").fadeOut();
0 голосов
/ 19 ноября 2011

Ваша функция может выглядеть так:

$(min_reg).click(function () {
    var animated_div = $(ftr_form_cntr);
    if(animated_div.hasClass('opened')){  
        animated_div.find('div').fadeOut();
        tcr_form_cntr.fadeIn(1000);
        return;
    }
    animated_div.show().stop(true, true).animate({
        height:"170"
    },1000).addClass('opened');
    tcr_form_cntr.fadeIn(1000);
});

То, что я сделал, это:

  • Я кэшировал элемент , над которым вы работаете ($(ftr_form_cntr)),
  • использовал .find() метод jQuery для получения всех элементов div , которые вы хотите исчезнуть,

Это помогло? Пожалуйста, убедитесь, что оба значения ftr_form_cntr и tcr_form_cntr определены , а сначала , например. селектор , но секунда должна быть объектом jQuery .

...