为什么以下代码在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个元素没有。
答案 0 :(得分:4)
请勿检查style
属性。它不一定会返回当前的现实,也不会考虑其他地方定义的任何样式。
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
}