2011-07-19 42 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