2017-10-09 136 views
-5

我用Bootstrap Tab腳本:與指定名稱刪除所有類

<div class="container"> 
    <ul class="nav nav-tabs"> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/calculaties.php?id='.$row['id'].'">Calculaties</a></li> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/offertes.php?id='.$row['id'].'">Offertes/bevestigingen</a></li> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/bestellingen.php?id='.$row['id'].'">Bestellingen</a></li> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/vrachtbrieven.php?id='.$row['id'].'">Vrachtbrieven</a></li> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/facturen.php?id='.$row['id'].'">Facturen</a></li> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/producten.php?id='.$row['id'].'">Producten</a></li> 
     <li role="presentation" class="clickable"><a href="includes/dossier_detail/certificaten.php?id='.$row['id'].'">Certificaten</a></li> 
    </ul> 
</div> 

爲了得到這樣的結果:

要設置選項卡爲活動我使用這個js腳本:

<script type="text/javascript"> 
// Change class on click 
$(function() { 
    $(".clickable").click(function() { 
    $(this).addClass("active"); 
    }); 
});</script> 

當然,當點擊所有標籤時,類active添加到每個標籤導致

因此,爲了防止這一點,我已經添加removeClass('active')到我的JS腳本:

<script type="text/javascript"> 
// Change class on click 
$(function() { 
    $(".clickable").click(function() { 
    removeClass('active') 
    $(this).addClass("active"); 
    }); 
});</script> 

但現在的類有效時,不能在當前點擊選項卡上設置。如何解決這個問題?

+2

我很驚訝你在你的控制檯顯示'removeClass()'方法調用時沒有錯誤。請先使用其中的一種方法,例如[** jQuery removeClass **](https://),請先使用RTFM [** jQuery文檔**](https://api.jquery.com/) api.jquery.com/removeclass/) – Nope

回答

2
你想從擁有它的所有元素刪除活動類,所以你需要先選擇這些元素

,你可以做哪些元素是這樣的:

$(".clickable").click(function() { 
    $('.clickable').removeClass('active') 
    $(this).addClass("active"); 
    }); 
1

您必須在您的日誌中出現錯誤,

removeClass沒有定義。

您錯過了使用哪個elements要刪除active類。

獲取clickable元素並從中刪除active。因爲有一個使用$(".clickable")的副本,兩次遍歷DOM,所以可以將其存儲在一個變量中。

<script type="text/javascript"> 

$(function() { 

    const clickables = $(".clickable"); 

    clickables.click(function() { 
    clickables.removeClass('active'); 
    $(this).addClass("active"); 
    }); 

}); 
</script> 
+0

如果新元素獲得'clickable'屬性會怎麼樣?在這裏,你不應該「緩存」可點擊。 – Cerbrus

+0

在這種情況下,它們被定義爲 –

1

嘗試指定要刪除類

$(".clickable").removeClass('active');

0

你需要有一個jQuery選擇器,使removeClass真正做一些事情。所以,你可以這樣做:

$(function() { 
    $(".clickable").click(function() { 
    $('.active').removeClass('active') 
    $(this).addClass("active"); 
    }); 
}); 

這將讓所有當前「活動」的元素和刪除active類。

+2

現在,如果在頁面的其他地方使用'.active',那麼該怎麼辦?你只想從'.clickable'元素中移除這個類。 – Cerbrus

+0

@Cerbrus好評,我只想將它從.clickable元素的類中移除 – Muiter

+1

@Miter:在這種情況下,Dji的答案似乎更合適。 – Cerbrus

相關問題