2012-05-07 28 views
0

我正在使用jQuery在页面中显示和隐藏部分。该方法适用于Chrome,FF和Safari,但在IE8和7中可以使用。试图使用动画,淡入淡出和不透明。在IE中似乎没有任何工作。根据IE Developer Tools的js控制台,所选元素有一个'active'类,但是当我在Dev Tools html窗口中查看dom树时, 活动'类尚未被删除或重写到DOM 。无法在IE8及以下版本中使用jQuery添加/删除类

的Mark-了

<nav> 
<ul> 
<li id="foo">Show Section 1</li> 
<li id="bar">Show Section 2</li> 
</ul> 
</nav> 

<div id="items"> 
<section class="foo">Content Section 1</section> 
<section class="bar">Content Section 2</section> 
</div> 

的CSS

#items > section {display: none;} 
.active {display: block;} 

的JS

$('nav li').click(function(){ 
    var $me = $(this); 
showSection($me.attr('id')); 
}); 

showSection function(whichSection){ 
    $('#items > section').removeClass('active');  
    $('#items > '+'.'+whichSection).addClass('active'); 
} 

任何意见是极大的赞赏。我正处于一个讨厌的期限。干杯。

+5

您可能需要包含html5shiv(或Modernizr)才能让IE8识别HTML5标记。 – Adam

+0

您的HTML验证?另请参阅Adam的评论。 – Sparky

+0

我看不出你的例子在任何地方工作。 – j08691

回答

2

你有你的id和类混在一起。

$('nav li').click(function(){ 
    var $me = $(this); 
    showSection($me.attr('id')); 
}); 

showSection function(whichSection){ 
    $('#items > section').removeClass('active');  
    $('#items > #' + whichSection).addClass('active'); 
} 
+0

谢谢尼克,我刚刚发现了这一点。我应该为这个示例代码做一个小提琴。我急于尝试获得一些反馈。谢谢您的帮助。原来的问题仍然存在,所以如果你有什么可能发生的想法,特别是在IE中,请让我知道。 –

1

你的函数声明是错误的:

function showSection (whichSection){ 
     $('#items > section').removeClass('active');  
     $('#items > #' + whichSection).addClass('active'); 
    } 

或者

var showSection = function(whichSection){ 
     $('#items > section').removeClass('active');  
     $('#items > #' + whichSection).addClass('active'); 
    } 

注:IE不了解section所以你可以使用html5shiv/Modernizr。找出HTML5标签。

+0

谢谢。编写示例代码我做得很差。在真正的版本中,函数是一个对象方法。 –