JQuery - 如何正确删除 Internet Explorer 中的 CSS 属性?

标签 jquery internet-explorer

我正在进行一些表单验证,并注意到 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/

相关文章:

javascript - 随着 HTML5 范围 slider 的移动连续更改文本框的值

javascript - JQuery 签名不适用于 IE <= 9

javascript - 根 css 不适用于 IE 浏览器

javascript - 您的浏览器污染了 Internet Explorer 中的 Canvas

IE7中的CSS对齐问题

jquery - 更改段落中随机字母的颜色

javascript - 在 LI 上更改类别

javascript - 如何在单击链接时将动态内容添加到 Bootstrap 模式 - Jquery/JS

javascript - jQuery.getScript() 行为

html - IE 中的文件上传按钮和奇怪的文本光标行为