在IE7中使用jQuery读取元素属性的问题

时间:2010-03-23 15:03:17

标签: javascript jquery internet-explorer-7

我发誓以下代码用于工作,即使在IE7中,但现在我得到了

错误:对象不支持此属性或方法

$('div').each(function() {
  if(! this.attr('id').startsWith('light') ) {  
    this.css('zIndex', zIndexNumber);
    zIndexNumber -= 10;
  }
});

有什么想法吗?

        $('div').each(function() {

        var divId = new String ( $(this).attr('id') );

        if(! divId.indexOf('light') == 0 ) {  
            $(this).css('zIndex', zIndexNumber);
            zIndexNumber -= 10;
        }

        });

2 个答案:

答案 0 :(得分:3)

应该是

$(this)

而不是

this

$(this)创建了jQuery对象,您可以在其上使用所有jQuery函数。 this“仅”是DOM元素,并且此元素没有例如属性attr()css()

更新:

您确定.startsWith()存在吗?你有没有自己定义,因为JS没有这样的功能。

尝试:

if($(this).attr('id').indexOf('light') == 0)

答案 1 :(得分:2)

我知道您已经接受了答案,但根据您的代码,如果您更改选择器,您似乎根本不需要使用if语句:

$('div[id^=light]').each(function() {

        $(this).css('zIndex', zIndexNumber);
        zIndexNumber -= 10;

});
选择器中的

div[id^=light]表示“获取id为'light'的所有div。”

同样,div[id$=light]将选择ID为“light”的所有div,div[id*=light]将选择ID中包含“light”的所有div。

这甚至不仅限于id。您可以在任何元素的任何属性上使用它。我知道当我第一次发现它时,我发现它非常有用。