Javascript 淡出所有嵌套的div

Javascript 淡出所有嵌套的div,javascript,jquery,html,fadeout,Javascript,Jquery,Html,Fadeout,在我的页面上,我尝试这样做:比方说,当我们点击idmin\u reg的链接时,它会用idftr\u form\u cntr为div设置动画,并在其中显示另一个divtcr\u form\u cntr。有3-4个链接具有相同的功能,但在ftr\u form\u cntr中显示另一个div。如果用户第一次点击其中一个链接,那么就没有问题了。但是,如果用户已经单击(我的意思是如果ftr\u form\u cntr已经打开),我只想淡出嵌套到ftr\u form\u cntr的所有现有div,淡入另一个

在我的页面上,我尝试这样做:比方说,当我们点击id
min\u reg
的链接时,它会用id
ftr\u form\u cntr
为div设置动画,并在其中显示另一个div
tcr\u form\u cntr
。有3-4个链接具有相同的功能,但在
ftr\u form\u cntr
中显示另一个div。如果用户第一次点击其中一个链接,那么就没有问题了。但是,如果用户已经单击(我的意思是如果
ftr\u form\u cntr
已经打开),我只想淡出嵌套到
ftr\u form\u cntr
的所有现有div,淡入另一个div(或者用另一个div替换现有div)

看看这一行
tcr\u form\u 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);
});
$(最小值)。单击(函数(){
if($(ftr\u form\u cntr).hasClass('opened'){
$(ftr\u表单\u cntr)。。。
tcr_form_cntr.fadeIn(1000);
返回;
}
ftr_form_cntr.show().stop(true,true).设置动画({
高度:“170”
},1000)。addClass(“打开”);
tcr_form_cntr.fadeIn(1000);
});

假设
ftr\u form\u cntr
是一个字符串变量,用于保存容器元素的jQuery选择器,您可以选择其中的所有div元素,并按如下方式淡入淡出:

$(ftr_form_cntr + " div").fadeOut();
$(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\u form\u cntr
不是字符串变量,而是对DOM元素或其他对象的引用,则选择某些嵌套元素的另一种方法是使用该方法,该方法根据您提供的另一个选择器获取现有jQuery对象中元素的后代:

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

您的函数可以如下所示:

$(ftr_form_cntr + " div").fadeOut();
$(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\u form\u cntr)
  • 使用
    .find()
    jQuery方法获取所有要淡出的div

有帮助吗?请确保定义了
ftr\u form\u cntr
tcr\u form\u cntr
,并且第一个是,例如选择器,但第二个必须是jQuery对象。请注意,问题中的代码似乎有点混淆了
ftr\u form\u cntr
是什么:它似乎是一个jQuery对象,因为在某一点上,您可以直接访问jQuery方法-
ftr\u form\u cntr.show()
,但在此之前,您将其视为选择器-
$(ftr\u form\u cntr)
,这也会起作用,但如果您之前说过
var ftr\u form\u cntr=$(“某个选择器”),则不需要。我是js新手。在函数之前缓存div到var。在$(ftr_form_cntr)和ftr_form_cntr之间有什么区别吗?我不知道为什么巨魔会无缘无故地投反对票,但我尊重任何试图帮助我并为我浪费他/她的黄金时间的人+1快速回复。我已经决定了。thx Mate我可以在没有hasclass但有visible的情况下完成吗?是的,如果您想确定可见性。就用吧。