2011-06-20 45 views
0

如何通過jQuery在IE6 \ IE7 \ IE8中刪除樣式屬性或更改寬度\高度CSS屬性?不工作:通過jQuery在IE6 IE7 IE8中刪除樣式屬性或更改寬度高度css屬性

不起作用:

$(e).css({'width': '', 'height': ''}); 
$(e).removeAttr('style'); 
e.removeAttribute('style'); 

更新:

e是DOM的原生對象。螢火蟲告訴我,元素存在

在第一個函數我加寬度\高度,在第二次刪除。

在其他瀏覽器中

一切ok

不起作用:

$(e).css({'width': 'auto', 'height': 'auto'}); 
+0

你爲什麼要去除寬度和高度?如果你想讓它消失,那麼你應該做$(e).hide();和$(e).show();或者你可以做$(e).width(0).height(0);刪除屬性是不必要的。 – MoarCodePlz

+1

我們需要看看'e'是如何定義的。它是一個jQuery對象嗎?例如,它是否來自'.click()'調用的'function(e)'中? – Bojangles

+1

什麼是'e'?它在其他瀏覽器中工作嗎? –

回答

0

所以,你要設置的寬度和高度回到什麼是在CSS中定義?

理論上你應該做的工作(除非有一些我不知道的jQuery特定問題),但我認爲IE不會接受空字符串作爲有效值,並可能保持該值不變。

最簡單的方法就是在第一次改變它之前存儲原始值(除非這是一個應用於未定義數量的元素的通用效果,這應該不會太難)並將其設置回該值而不是清除它。

如果原始值是諸如百分比(屏幕寬度等)的計算值,則可能必須重新計算或將其設置爲硬編碼百分比值,因爲您可能無法獲取原始css值,只有計算出的像素值。

1

我想你想設置的widthheight屬性的「初始值」。

這兩個屬性的初始值是auto,所以這將工作:

$(e).css({ 
    'width': 'auto', 
    'height': 'auto' 
}); 

我在IE6測試了這一點,它按預期工作:http://jsfiddle.net/BNrgF/

+0

這對我也不適用:\ –

+0

這只是根據您提供的**最少量信息進行的有根據的猜測。你顯然已經把問題分類了,所以沒關係。 – thirtydot

+0

非常好,一個空白字符串沒有工作,我的記憶失敗了;我很欣賞使用'auto'的提示。 – SilverbackNet