jquery - Change Font Awesome Icon on Click, but return to original icon when next item is clicked -
i'm using bootstrap 3 panel's , have appended font awesome plus , minus icons panel items. i'm looking way using jquery change plus minus "onclick", when panel item clicked i want minus icon change plus.
i have been experimenting jquery , have come close. think might missing simple here. seems work fine few clicks, starts confusing class switch to. html:
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingfive"> <h4 class="panel-title"><a class="collapsed faq-links" data-toggle="collapse" data-parent="#accordion" href="#collapsefive" aria-expanded="false" aria-controls="collapsefive"><i class="fa fa-plus-square-o fa-2x"></i> panel title 1</a></h4> </div> <div id="collapsefive" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingfive"> <div class="panel-body"> <p>panel body text</p> </div> </div> </div> <br /> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="heading13"> <h4 class="panel-title"><a class="collapsed faq-links" data-toggle="collapse" data-parent="#accordion" href="#collapse13" aria-expanded="false" aria-controls="collapse13"><i class="fa fa-plus-square-o fa-2x"></i> panel title 2</a></h4> </div> <div id="collapse13" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading13"> <div class="panel-body"> <p>panel body text 2</p> </div> </div> </div> <br /> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingfour"> <h4 class="panel-title"><a class="collapsed faq-links" data-toggle="collapse" data-parent="#accordion" href="#collapsefour" aria-expanded="false" aria-controls="collapsefour"><i class="fa fa-plus-square-o fa-2x"></i> panel title 3</a></h4> </div> <div id="collapsefour" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingfour"> <div class="panel-body"> <div id="collapsefour" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingfour"> <div class="panel-body"> <p>panel body text 3</p> </div> </div> </div> </div>
and jquery looks this:
//toggle font awesome on click $('.faq-links').click(function(){ $(this).find('i').toggleclass('fa-plus-square-o fa-2x fa-minus-square-o fa-2x') }); $('.faq-links').blur(function(){ $(this).find('i').toggleclass('fa-plus-square-o fa-2x fa-minus-square-o fa-2x') });
as can see, i'm using click on 1 function, , blur on next event listeners. doing wrong here? have jsfiddle set further explain issue.
thanks in advance help.
update: shivali patel's answer worked me:
$('.faq-links').click(function(){ var collapsed=$(this).find('i').hasclass('fa-plus-square-o'); $('.faq-links').find('i').removeclass('fa-minus-square-o'); $('.faq-links').find('i').addclass('fa-plus-square-o'); if(collapsed) $(this).find('i').toggleclass('fa-plus-square-o fa-2x fa-minus-square-o fa-2x') });
he created variable based on collapse , used addclass , removeclass in addition toggleclass events. great work shivali.
this happening because of blur event
.
if click outside of accordion still blur event called , changed icons of relevant accordion.
example here :
http://jsfiddle.net/t7jtnupu/2/
Comments
Post a Comment