Reputation: 2584
How to toggle the icon class from fa-chevron-down
to fa-chevron-up
on link if the toggle-project-stages
div is visible?
$(".toggle-project-stages").hide();
$(".toggle-project-status-downArrow").click(function(e){
e.preventDefault();
var toggleDiv = $(this).parent().prev('.panel-heading').find(".toggle-project-stages").toggle(200);
$(".toggle-project-stages").not(toggleDiv).slideUp(200);
});
Upvotes: 2
Views: 306
Reputation: 87
$(".toggle-project-stages").hide();
$(".toggle-project-status-downArrow").click(function (e) {
e.preventDefault();
var toggleDiv = $(this).parent().prev('.panel-heading').find(".toggle-project-stages").toggle(200);
$(".toggle-project-stages").not(toggleDiv).slideUp(200);
var $i = $('i', this).toggleClass('fa-chevron-down fa-chevron-up')
$('.toggle-project-status-downArrow i').not($i).removeClass('fa-chevron-up').addClass('fa-chevron-down')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="panel-dashboard">
<div class="panel-heading">
<div class="toggle-project-stages">
<p>This is what I want to show!</p>
</div>
</div>
<div class="toggle-project-status">
<a href="#" class="toggle-project-status-downArrow">Show div <i class="fa fa-chevron-down"></i></a>
</div>
</div>
<br/><br/>
<div class="panel-dashboard">
<div class="panel-heading">
<div class="toggle-project-stages">
<p>This is what I want to show!</p>
</div>
</div>
<div class="toggle-project-status">
<a href="#" class="toggle-project-status-downArrow">Show div <i class="fa fa-chevron-down"></i></a>
</div>
</div>
Upvotes: 0
Reputation: 2582
$(".toggle-project-stages").hide();
$(".toggle-project-status-downArrow").click(function(e){
e.preventDefault();
var toggleDiv = $(this).parent().prev('.panel-heading').find(".toggle-project-stages").toggle(200);
if( $(this).children().hasClass( "fa-chevron-down" )){
$(this).children().removeClass('fa-chevron-down').addClass('fa-chevron-up');
}
else{
$(this).children().removeClass('fa-chevron-up').addClass('fa-chevron-down');
}
$(".toggle-project-stages").not(toggleDiv).slideUp(200);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="panel-dashboard">
<div class="panel-heading">
<div class="toggle-project-stages">
<p>This is what I want to show!</p>
</div>
</div>
<div class="toggle-project-status">
<a href="#" class="toggle-project-status-downArrow">Show div <i class="fa fa-chevron-down"></i></a>
</div>
</div>
<br/><br/>
<div class="panel-dashboard">
<div class="panel-heading">
<div class="toggle-project-stages">
<p>This is what I want to show!</p>
</div>
</div>
<div class="toggle-project-status">
<a href="#" class="toggle-project-status-downArrow">Show div <i class="fa fa-chevron-down"></i></a>
</div>
</div>
Upvotes: 1
Reputation: 388436
You can use toggleClass()
$(".toggle-project-stages").hide();
$(".toggle-project-status-downArrow").click(function (e) {
e.preventDefault();
var toggleDiv = $(this).parent().prev('.panel-heading').find(".toggle-project-stages").toggle(200);
$(".toggle-project-stages").not(toggleDiv).slideUp(200);
var $i = $('i', this).toggleClass('fa-chevron-down fa-chevron-up')
$('.toggle-project-status-downArrow i').not($i).removeClass('fa-chevron-up').addClass('fa-chevron-down')
});
Demo: Fiddle
Upvotes: 3
Reputation: 337714
Within the callback of toggle()
you can use toggleClass
to remove the chevron-down
and chevron-up
. Try this:
$(".toggle-project-status-downArrow").click(function (e) {
e.preventDefault();
var $el = $(this);
var toggleDiv = $el.closest('div').prev('.panel-heading').find(".toggle-project-stages").stop(true).toggle(200, function() {
$el.find('i').toggleClass('fa-chevron-down fa-chevron-up');
});
$(".toggle-project-stages").not(toggleDiv).stop(true).slideUp(200);
});
Upvotes: 0