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>&nbsp;&nbsp;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>&nbsp;&nbsp;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>&nbsp;&nbsp;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

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -