我正在进行一些表单验证,并注意到 Internet Explorer 无法正常工作(一如既往)。如果我将一些文本和 CSS 附加到 div 元素中并再次删除它(当输入正常时),资源管理器不会再次更正显示。我的意思是文本被删除,但仍然保留一个空白行(就好像有 br 元素一样)。我检查了源代码,CSS已正确删除,但显示不正确。为什么?
其他浏览器没有问题。
if(bla)
{
$("div[bez='avz_kw_err']").eq(index).html("Mindestens 3 Zeichen");
$("div[bez='avz_kw_err']").eq(index).attr("style","color:red; font-size:12px; line-height:12px; position:relative; top:5px; left:25px;");
}
else
{
$("div[bez='avz_kw_err']").eq(index).html("");
$("div[bez='avz_kw_err']").eq(index).attr("")
}
最佳答案
不要使用“.attr()”在 jQuery 1.6 或更高版本中设置样式属性。使用“.prop()”代替:
$("div[bez='avz_kw_err']").eq(index).prop("")
“style”属性是一个属性。 IE 对差异非常挑剔。使用“.prop()”来处理直接处理 jQuery 未包装的 DOM 元素时,您将视为对象的普通属性的任何内容:“name”、“id”、“className”、“tagName” ”等
编辑,因为我今晚很慢 - 也就是说 - 这都是真的 - 特别是“style”属性不是字符串值属性。它本身就是一个对象,将其设置为“”并没有真正的意义(对于 Firefox 或 IE)。但是您可以修改所有CSS属性:
$("div[bez='avz_kw_err']").eq(index).each(function() {
for (var cssp in this.style) {
this.style[cssp] = '';
}
});
再次编辑 - 嘿,大家别再给我投票了,直到我找到正确的答案 - 这可能在 IE 中不起作用......
编辑男孩在 IE 中很奇怪......在 IE8 中这可以工作:
$("div[bez='avz_kw_err']").eq(index).each(function() {
for (var cssp in this.style) {
try { this.style[cssp] = null; } catch (who_cares) {}
}
});
使用 null
而不是空字符串显然很重要;在某些时候,将某些内容设置为空字符串会导致 IE 占用并旋转 CPU 几秒钟。
关于JQuery - 如何正确删除 Internet Explorer 中的 CSS 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8632045/