2017-10-09 214 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

相关问题