简体   繁体   English

单击时更改字体真棒图标,但单击下一个项目时返回原始图标

[英]Change Font Awesome Icon on Click, but return to original icon when next item is clicked

I'm using Bootstrap 3 Panel's and have appended the Font Awesome Plus and Minus icons to the panel items. 我正在使用Bootstrap 3 Panel,并将Font Awesome Plus和Minus图标添加到面板项目中。 I'm looking for a way using Jquery to change the plus to a minus "onClick", then when another panel item is clicked I want that minus icon to change back to plus . 我正在寻找一种方法,使用Jquery将加号更改为减去“onClick”,然后当单击另一个面板项时, 我希望减去图标更改回加号

I have been experimenting with some Jquery and have come close. 我一直在尝试一些Jquery并且已经接近了。 I think I might just be missing something simple here. 我想我可能会在这里错过一些简单的东西。 It seems to work fine for a few clicks, then it starts confusing which class to switch back to. 它似乎可以正常工作几下,然后它开始混淆哪个类切换回来。 My HTML: 我的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 my Jquery looks like this: 我的Jquery看起来像这样:

//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 you can see, I'm using click on one function, and blur on the next as the event listeners. 正如您所看到的,我正在使用单击一个函数,并在下一个函数模糊事件监听器。 What am I doing wrong here? 我在这做错了什么? I have a JSFIDDLE set up to further explain my issue. 我有一个JSFIDDLE设置来进一步解释我的问题。

Thanks in advance for any help. 在此先感谢您的帮助。

Update: Shivali Patel's answer that worked for me: 更新:Shivali Patel的答案对我有用:

$('.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 a variable based on collapse and used addClass and removeClass in addition to the toggleClass events. 他创建了一个基于collapse的变量,除了toggleClass事件之外还使用了addClass和removeClass。 Great work Shivali. 伟大的工作Shivali。

This is happening because of blur event . 这是因为blur event
If you click outside of any accordion still blur event is called and changed the icons of relevant accordion. 如果您点击任何手风琴之外仍然会调用模糊事件并更改相关手风琴的图标。

Example here : 这里的例子:
http://jsfiddle.net/t7jtnupu/2/ http://jsfiddle.net/t7jtnupu/2/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM