【问题标题】:IE8 issue with jQuery attr()jQuery attr() 的 IE8 问题
【发布时间】:2015-02-18 23:38:42
【问题描述】:

我正在使用 IE8,并且收到“找不到对象”的错误信息:

var l_classList = $(this).attr('class').trim().split(/\s+/);

实际代码块如下:

$( "div.panel" ).each(function(index) {
    var l_classList = $(this).attr('class').trim().split(/\s+/);
    if ( l_classList.length == 1 ) $(this).addClass("panel-default");
});

关于如何在 IE8 中解决此问题的任何想法?

【问题讨论】:

  • 你试过$(this).prop("className")吗? (或者只是this.className?)
  • 尝试了你的建议,不幸的是没有运气。
  • 哪行代码给了你这个错误? (另外,它真的是“找不到对象”吗?这是一个奇怪的错误。)它们可能在 IE8 中的 String 原型上没有 .trim() 函数。
  • 你想在这里实现什么?看起来您正在将类 panel-default 添加到每个只有一个类集的 div 元素中,并且由于您已经将 .panel 用作选择器,因此该类在任何情况下都只能是 panel 吗?仅仅检查类 is panel (在修剪值之后,如果你的环境需要的话)似乎比你跳过的箍更直接......
  • 试试:$.trim($(this).attr('class')).split(/\s+/); (source)

标签: javascript jquery internet-explorer-8


【解决方案1】:

IE8 不支持 trim() 方法。

尝试将其添加到您的辅助函数中,然后运行您的脚本。

if (!String.prototype.trim) {
    (function() {
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
            return this.replace(rtrim, '');
        };
    })();
}

【讨论】:

  • @Cracker0dks 刚刚向 OP 添加了一条评论,你比我快了大约 4 秒 =]
  • @yuvi Yeahh 我是赢家:D
猜你喜欢
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多