2011-11-19 69 views
1

在我的頁面上,我試圖做這樣的smth:可以說,當我們點擊一​​些鏈接ID爲min_reg它動畫div與id ftr_form_cntr,並顯示另一個div tcr_form_cntr內。有3-4個鏈接做相同的功能,但在ftr_form_cntr內顯示另一個div。那麼如果用戶第一次點擊其中一個鏈接,那就沒有問題了。但如果用戶已經點擊(我的意思是如果ftr_form_cntr已經打開),我只想淡出所有現有的div嵌套到ftr_form_cntr並淡入另一個div(或與另一個div交換現有的div)。Fadeout所有嵌套divs

看一下這一行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); 
}); 

回答

3

假設ftr_form_cntr是一個字符串變量保存您的容器元素的jQuery選擇,你可以在裏面選擇所有的div元素和褪色他們是這樣的:

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

看看the jQuery doco on selectors,特別是"descendant selector"

如果ftr_form_cntr不是一個字符串變量,但實際上是,比如說,一個DOM元素或東西,然後另一種方式來選擇某些嵌套元素使用.find()方法,後者元素的後代在現有的jQuery對象的引用根據另一種選擇,你提供:

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

確定找到工作.. –

+0

很酷。請注意,問題中的代碼似乎對ftr_form_cntr的含義有些困惑:它似乎是一個jQuery對象,因爲您曾經直接訪問jQuery方法 - 「ftr_form_cntr.show()」,但在此之前您將其視爲一個選擇器 - $(ftr_form_cntr)' - 這也可以工作,但如果你以前說過var var ftr_form_cntr = $(「some selector」);'是不需要的。 – nnnnnn

+0

我是js的新手。在函數之前緩存div到var。有沒有差異。 $(ftr_form_cntr)和ftr_form_cntr之間? –

0

你的函數看起來是這樣的:

$(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_cntrtcr_form_cntr定義爲,第一個是例如。選擇器,但秒必須是jQuery對象

+0

我不知道爲什麼巨魔在沒有任何理由的情況下投降,但我尊重任何試圖幫助和浪費他/她的黃金時間的人。 +1快速回復。我已經解決了。 thx隊友 –

+0

@TuralTeyyuboglu:我也不知道,但謝謝。祝你好運。 – Tadeck

+0

我可以做沒有hasclass但可見嗎? –