jQuery:attr的风格在IE中不起作用

时间:2011-05-31 13:27:24

标签: jquery css internet-explorer internet-explorer-8 internet-explorer-7

为什么以下代码在IE浏览器(7和8)中不起作用?

$("ul li").each(function() {
  if(($.trim($(this).attr("style"))) != "display: none;"){
     //if content
  }else if(($.trim($(this).attr("style"))) == "display: none;"){
     //else content
  }
});

注意:前4个li元素没有“style”属性,剩下的8个元素没有。

3 个答案:

答案 0 :(得分:4)

请勿检查style属性。它不一定会返回当前的现实,也不会考虑其他地方定义的任何样式。

使用:hidden过滤器,或使用css方法:

if ($(this).is(':hidden')) {

}

// or

if ($(this).css('display') == 'none') {

}

我通常更喜欢第一种语法,因为它需要考虑的不仅仅是display样式。

答案 1 :(得分:0)

请改用此代码:

("ul li").each(function() {
  if(($.trim($(this).css("display"))) != "none"){
     //if content
  }else if(($.trim($(this).css("display"))) == "none"){
     //else content
  }
});

答案 2 :(得分:0)

您正在将属性与属性进行比较,display是元素属性,而不是属性。

最好用这样的东西:

if( ($.trim($(this).is(':visible') ) {
    // it's visible, do something
}
else { // no need for second condition, we *know* it's not visible!
    // it's not visible so do something else

}