我有一個網站,我設計了一些嵌套的DIV元素作爲容器來容納可擴展按鈕。
用戶點擊一個按鈕,它展開顯示更多的內容。
一切都很好,直到我有一個父DIV內部的DIV,它的display屬性設置爲「none」。
有沒有什麼辦法強制jQuery .slideUp()方法儘量減少可擴展按鈕,無論它是否在顯示:無父母或不是?
或者,我需要設置什麼屬性/屬性才能使$ .slideDown()在顯示器中設置的元素上正常工作:none parent DIV?
我有一個網站,我設計了一些嵌套的DIV元素作爲容器來容納可擴展按鈕。
用戶點擊一個按鈕,它展開顯示更多的內容。
一切都很好,直到我有一個父DIV內部的DIV,它的display屬性設置爲「none」。
有沒有什麼辦法強制jQuery .slideUp()方法儘量減少可擴展按鈕,無論它是否在顯示:無父母或不是?
或者,我需要設置什麼屬性/屬性才能使$ .slideDown()在顯示器中設置的元素上正常工作:none parent DIV?
取而代之的應用效果基本show()的可擴展按鈕,嘗試設置他們的「顯示」價值「無」。
這樣,當您應用.slideDown()方法時,它會認爲使用.slideUp()方法已經隱藏了該元素。
如果父母有display:none;
那麼您需要在嘗試向上滑動孩子之前顯示它。您可以使用show
函數執行此操作。
$(divToSlide).parent().show();
$(divToSlide).slideUp();
%的評論,你可以或者,你可以只顯示屬性設置爲「塊」
$(divToSlide).parent().css("display", "block");
$(divToSlide).slideUp();
實際上,更簡單的方法是簡單地將元素的CSS顯示屬性更改爲「無」。這樣可以避免處理更多元素所需的系統開銷。 – henkojinko
@henkojinko - 夠公平的,但你能詳細說明嗎?我假設演出只是設置顯示和可見性。它不僅僅是這樣做嗎? –
他們這樣做。但是,如果您希望使用slideDown正確觸發某個特定元素,而不必首先使用slideUp,則只需將其顯示屬性設置爲「無」即可。這樣,你不必擔心它嵌套在哪個祖先中,是隱藏的,阻止的或者沒有的。 – henkojinko
我有完全相同的問題,並沒有提到的解決方案爲我工作的方式我期望,因爲有時我應用show()
功能時失去了slideUp/slideDown動畫本身。我的最終解決方案是使用一個回調函數,直接應用的樣式:
$(divToSlide).slideUp(delay, function() {
// When animation ends
$(this).css('display', 'none');
});
這樣我能得到不失動畫相同的結果。
我會試試這個! – exoboy
這工作得很好,我只需要改變元素本身的CSS而不是它的父類。謝謝! – exoboy
+1瞭解OP的問題比我更好。 –