0

我正在使用 jQuery 显示和隐藏页面中的部分。该方法在 Chrome、FF 和 Safari 中有效,但在 IE8 和 7 中失效。尝试使用动画、淡入淡出和不透明度。在 IE 中似乎没有任何效果。根据 IE Developer Tools 的 js 控制台,被选中的元素有一个 'active' 类,但是当我在 Dev Tools html 窗口中查看 dom 树时,active' 类并没有被删除或重写到 DOM。

标记

<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');
}

任何意见是极大的赞赏。我正处于一个令人讨厌的截止日期之下。干杯。

4

3 回答 3

2

你把你的身份证和班级搞混了。

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

showSection function(whichSection){
    $('#items > section').removeClass('active');    
    $('#items > #' + whichSection).addClass('active');
}
于 2012-05-07T18:35:34.940 回答
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 标签。

于 2012-05-07T18:36:35.893 回答
0

IE8及以下不理解section标签除非你强制它知道标签,你可以使用html5shivjs库。

http://code.google.com/p/html5shiv

于 2012-05-07T18:36:22.070 回答