我发誓以下代码用于工作,即使在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;
}
});
答案 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。您可以在任何元素的任何属性上使用它。我知道当我第一次发现它时,我发现它非常有用。