Reputation: 3584
I am trying to add a class active, every time a click on a link but for now, it is only adding if I double click on it.
Here my HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="content">
<ul>
<li><a href="#">Deposit</a></li>
<li><a href="#">Account</a></li>
<li><a href="#">Credit</a></li>
</ul>
<div class="box active" id="deposit">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
<div class="box" id="account">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
<div class="box" id="credit">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
</div>
<div id="random">
<p>This is a random text</p>
</div>
CSS:
li{
list-style:none;
color: white;
width: 30%;
a{
color: white;
text-decoration: none;
&:hover{
color: blue;
}
}
}
ul{
background: black;
padding: 20px 0;
text-align: center;
display: flex;
justify-content: center;
}
.box{
height: 200px;
}
#deposit{
background: green;
}
#account{
background: pink;
}
#credit{
background: blue;
}
li a.active{
color: red;
}
JS:
$(document).ready(function(){
$('div.box').hide();
$('li a').on("click", function(){
if(!$('li a').hasClass('active')){
$(this).addClass('active');
}
else{
$('li a').removeClass('active');
}
});
});
Here my pen: http://codepen.io/Sidney-Dev/pen/MbyXvP
How can I add the class active to the link when I click on it and remove that same class from any other link if it exists? Hope you can help.
Upvotes: 0
Views: 62
Reputation: 20740
Just remove active
class from all a
and then add active
class to clicked a
like following.
$('div.box').hide();
$('li a').on("click", function() {
$('li a').removeClass('active');
$(this).addClass('active');
$('div.box').hide();
var index = $(this).parent().index();
$('div.box').eq(index).show();
});
Upvotes: 1
Reputation: 216
You have to remove the existing active class first then add the same class on click event.
$(document).ready(function(){
$('div.box').hide();
$('li a').on("click", function(){
$('li a').removeClass('active');
$(this).addClass('active');
});
});
Upvotes: 0
Reputation: 3130
You should only modify the elements on which click happened. You could do something like this.
$(document).ready(function() {
$('div.box').hide();
$('li a').on("click", function(event) {
let $ele = $(event.target);
$('li a').not($ele).removeClass('active');
$ele.toggleClass('active')
});
});
li {
list-style: none;
color: white;
width: 30%;
a {
color: white;
text-decoration: none;
&: hover {
color: blue;
}
}
}
ul {
background: black;
padding: 20px 0;
text-align: center;
display: flex;
justify-content: center;
}
.box {
height: 200px;
}
#deposit {
background: green;
}
#account {
background: pink;
}
#credit {
background: blue;
}
li a.active {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="content">
<ul>
<li><a href="#">Deposit</a>
</li>
<li><a href="#">Account</a>
</li>
<li><a href="#">Credit</a>
</li>
</ul>
<div class="box active" id="deposit">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
<div class="box" id="account">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
<div class="box" id="credit">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
</div>
<div id="random">
<p>This is a random text</p>
</div>
Upvotes: 0
Reputation: 5796
$(document).ready(function(){
$('div.box').hide();
$('li a').on("click", function(){
$('li a').not($(this)).removeClass('active');
$(this).toggleClass('active');
});
});
li{
list-style:none;
color: white;
width: 30%;
a{
color: white;
text-decoration: none;
&:hover{
color: blue;
}
}
}
ul{
background: black;
padding: 20px 0;
text-align: center;
display: flex;
justify-content: center;
}
.box{
height: 200px;
}
#deposit{
background: green;
}
#account{
background: pink;
}
#credit{
background: blue;
}
li a.active{
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="content">
<ul>
<li><a href="#">Deposit</a></li>
<li><a href="#">Account</a></li>
<li><a href="#">Credit</a></li>
</ul>
<div class="box active" id="deposit">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
<div class="box" id="account">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
<div class="box" id="credit">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio sunt voluptates reprehenderit similique nostrum eius repudiandae odio eos obcaecati doloremque quam quos, officiis veritatis blanditiis soluta molestiae iusto illo corrupti.</p>
</div>
</div>
<div id="random">
<p>This is a random text</p>
</div>
Upvotes: 0