2011-12-06 55 views
4

我有一個網站,我設計了一些嵌套的DIV元素作爲容器來容納可擴展按鈕。

用戶點擊一個按鈕,它展開顯示更多的內容。

一切都很好,直到我有一個父DIV內部的DIV,它的display屬性設置爲「none」。

有沒有什麼辦法強制jQuery .slideUp()方法儘量減少可擴展按鈕,無論它是否在顯示:無父母或不是?

或者,我需要設置什麼屬性/屬性才能使$ .slideDown()在顯示器中設置的元素上正常工作:none parent DIV?

回答

3

取而代之的應用效果基本show()的可擴展按鈕,嘗試設置他們的「顯示」價值「無」。

這樣,當您應用.slideDown()方法時,它會認爲使用.slideUp()方法已經隱藏了該元素。

+0

我會試試這個! – exoboy

+0

這工作得很好,我只需要改變元素本身的CSS而不是它的父類。謝謝! – exoboy

+0

+1瞭解OP的問題比我更好。 –

5

如果父母有display:none;那麼您需要在嘗試向上滑動孩子之前顯示它。您可以使用show函數執行此操作。

$(divToSlide).parent().show(); 
$(divToSlide).slideUp(); 

%的評論,你可以或者,你可以只顯示屬性設置爲「塊」

$(divToSlide).parent().css("display", "block"); 
$(divToSlide).slideUp(); 
+0

實際上,更簡單的方法是簡單地將元素的CSS顯示屬性更改爲「無」。這樣可以避免處理更多元素所需的系統開銷。 – henkojinko

+0

@henkojinko - 夠公平的,但你能詳細說明嗎?我假設演出只是設置顯示和可見性。它不僅僅是這樣做嗎? –

+0

他們這樣做。但是,如果您希望使用slideDown正確觸發某個特定元素,而不必首先使用slideUp,則只需將其顯示屬性設置爲「無」即可。這樣,你不必擔心它嵌套在哪個祖先中,是隱藏的,阻止的或者沒有的。 – henkojinko

0

我有完全相同的問題,並沒有提到的解決方案爲我工作的方式我期望,因爲有時我應用show()功能時失去了slideUp/slideDown動畫本身。我的最終解決方案是使用一個回調函數,直接應用的樣式:

$(divToSlide).slideUp(delay, function() { 
    // When animation ends 
    $(this).css('display', 'none'); 
}); 

這樣我能得到不失動畫相同的結果。