2011-09-16 57 views
2
$(myelem).removeAttr('attributeName'); 

在IE 7不工作建議的解決辦法是:刪除屬性

$(myelem).prop("attributeName", false); 

$(myelem).prop("attributeName", null); 

$(myelem).attr("attributeName", ''); 

這些都是很好,如果你想改變渲染或行爲。我需要的是實際從源代碼中刪除屬性。例如。

<p align="center"> 應該成爲 <p> 上面的例子都集中在做這個 <p align=""> 這將改變排列,但屬性仍然存在。

任何現在的方式或真的刪除屬性?

我使用jQuery 1.6.1

+0

在某些瀏覽器的「查看源文件」顯示您最初呈現的標記無論你多麼操縱它。 jQuery操縱DOM,而不是你的源標記。使用Firebug/Developer Toolbar檢查被操縱的DOM,看看實際上在做什麼jQuery。這就是說,你的目標是什麼?爲什麼*必須*完全刪除屬性? –

+0

XY問題。如果你解釋爲什麼要完全刪除屬性,以及爲什麼將它設置爲空字符串,這將會更好。 – Blazemonger

+0

@Cory,是的,我知道這一點。我正在編輯的HTML是WYSIWIG編輯器的內容。內容被上傳到服務器,其中預期不具有某些屬性。 – Tomas

回答

2

嘗試完全替代p標籤,用新的p標記沒有屬性:

$(myelem).replaceWith("<p>"+$(myelem).html()+"</p>"); 
+0

是的,我已經想到了,那個問題就是表現,它是一個大博客,更重要的是;它不保留我想保留的屬性。 – Tomas

+0

即使您的回答對我無幫助,但這是問題的答案,所以我會將其設置爲已接受。謝謝! – Tomas

2
myelem.removeAttribute('attribute name'); 

這應該工作,據我所知的唯一屬性IE7是無法刪除的事件處理程序。

請參閱此鏈接的removeAttribute兼容性。

+1

+1是的,這應該工作。做到這一點,然後嘗試從元素中獲取該屬性。 Betcha你不會找到它。 – hunter

+0

是的,它可以工作,但不適用於所有屬性,例如contentEditable,datafld。這些屬性來自word的HTML,我需要刪除它們。 – Tomas