2010-11-06 72 views
1

這一個工程:

http://jsfiddle.net/fGnL7/3/

使用

$(document.body).click(function() { 
    if ($("div:first").is(":hidden")) { 
    $("div").slideDown("slow"); 
    } else { 
    $("div").slideUp("slow"); 
    } 
}); 

,但如果由於某種原因,該元素是由一些框架方面取得display: block(由北斗/藍圖的+clearfix),所以我使用了

display: none !important 

使其不能在頁面上顯示,然後代碼將不起作用。

樣本:http://jsfiddle.net/fGnL7/4/

我也嘗試添加$("div").css({display: 'block'});甚至$("div").css({display: 'block !important'});slideDown(),它也不管用了。

樣本:http://jsfiddle.net/fGnL7/7/

有沒有辦法解決?

回答

1

我會使用overflow: auto;作爲您正在滑動的<div>元素的父級,而不是您當前使用的clearfix解決方案。這不是一個真正的腳本問題,而是一種風格。

順便說一句,您的演示不是使用jsfiddle的適當方式,並且可能引入多個錯誤...當呈現時,左上角的內容已經在<body>標記內。 Instead your examples should look like this(也請注意使用.slideToggle())。

1

!important給出無限特定於CSS規則,您將無法重寫它。

我建議不要在主頁上綁定您的幻燈片行爲,以達到您想要的效果。那也會讓神的幸福感增加

1

因爲!important規則優先於所有內容!當使用slide函數時,jQuery會自動給元素一個非!important樣式display: block,消除display: block !important並使style標記中定義的樣式優先。

簡單的解決方法是不使用!important。最難的是進入jQuery源代碼並在!important中添加添加到滑動元素的樣式。

+0

問題是我必須使用'!important' – 2010-11-06 01:00:31

+0

@動靜能量 - 你爲什麼要*使用它?聽起來您應該解決其他問題,例如'clearfix',有處理浮動的替代方法。 – 2010-11-06 02:17:35

0

嘗試修改高度:0首先刪除屬性樣式並定期執行slideDown/slideUp操作。應該管用!如:selector.css('height','0')。attr('style','')。slideUp('slow')

相關問題