2011-07-19 25 views
0

我有这样的jQuery:removeClass没有什么了slideDown

$('.infoExpand p').hide(); 
$('.infoData').click(function(){ 
    $('.infoData').removeClass('infoDataHov'); 
    $(this).addClass('infoDataHov'); 
    var id = this.id; 
    id = id.replace("tab", "info"); 
    var clicked = $('.infoExpand #' + id); 
    if (clicked.is(':visible')){ 
     clicked.slideToggle(); 
    }else{ 
     $('.infoExpand p:visible').slideToggle(); 
     clicked.slideToggle(); 
    } 

}); 

随着这种标记:

<div class="infographic"> 
     <p>What am I made of...</p> 
     <span id="tabPhp" class="infoData">PHP</span> 
     <span id="tabJquery" class="infoData">jQuery</span> 
     <span id="tabWordpress" class="infoData">WordPress</span> 
     <span id="tabCss3" class="infoData">CSS3</span> 
     <span id="tabMysql" class="infoData">MySQL</span> 
     <div class="infoExpand"> 
      <p id="infoPhp">PHP</p> 
      <p id="infoJquery">jQuery</p> 
      <p id="infoWordpress">Wordpress</p> 
      <p id="infoCss3">CSS3</p> 
      <p id="infoMysql">MySQL</p> 
     </div> 
    </div> 

当用户点击一个已经选择了同一选项卡(滑动我有问题上P元素)该选项卡仍然有'infoDataHov'类应用于它?

我如何从所有.infoData中删除类如果没有什么是slideDown?

回答

1

您已经在代码的早期行$('.infoData').removeClass('infoDataHov');。它做你想要的:)你知道你要在这种情况下删除类,但是这样你就可以只使用其中$(this).removeClass('infoDataHov');元素:

$('.infoExpand p').hide(); 
$('.infoData').click(function(){ 
    $('.infoData').removeClass('infoDataHov'); 
    $(this).addClass('infoDataHov'); 
    var id = this.id; 
    id = id.replace("tab", "info"); 
    var clicked = $('.infoExpand #' + id); 
    if (clicked.is(':visible')){ 
     $(this).removeClass('infoDataHov'); 
     clicked.slideToggle(); 
    }else{ 
     $('.infoExpand p:visible').slideToggle(); 
     clicked.slideToggle(); 
    } 

}); 
+0

我需要去睡觉。谢谢 :) – benhowdle89