2011-09-16 214 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