jquery - 单击时更改 Font Awesome 图标,但单击下一个项目时返回原始图标

标签 jquery twitter-bootstrap-3 onclick font-awesome toggleclass

我正在使用 Bootstrap 3 面板,并将 Font Awesome 加号和减号图标附加到面板项目中。我正在寻找一种使用 Jquery 将加号更改为减号“onClick”的方法,然后当单击另一个面板项目时我希望减号图标改回加号

我一直在尝试一些 Jquery 并且已经接近了。我想我可能只是在这里错过了一些简单的东西。单击几下似乎可以正常工作,然后它开始混淆要切换回哪个类。我的 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>

我的 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')
 });

如您所见,我使用单击一个函数,并模糊下一个函数作为事件监听器。我在这里做错了什么?我有一个JSFIDDLE 设置是为了进一步解释我的问题。

提前感谢您的帮助。

更新: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')
});

他创建了一个基于collapse的变量,除了toggleClass事件之外,还使用了addClass和removeClass。干得好,Shivali。

最佳答案

发生这种情况是由于模糊事件
如果您在任何 Accordion 外部单击,仍然会调用模糊事件并更改相关 Accordion 的图标。

示例如下:
http://jsfiddle.net/t7jtnupu/2/

关于jquery - 单击时更改 Font Awesome 图标,但单击下一个项目时返回原始图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832191/

相关文章:

javascript - 如何获取当前Vue组件的DOM元素?

javascript - 时刻 js 的无效日期

javascript - Bootstrap 下拉菜单表现怪异

css - 如何在 bootstrap 3.0.2 中将容器宽度设置为 980px?

javascript - 通过python脚本将php变量参数传递给onclick函数

javascript - Jquery 图像预览并仍然保留在提交时?

php - 数据表 - 均匀分布在 3 个表中的数据 - 单个控件

twitter-bootstrap - 将一列推到另一行

javascript - 为什么我的函数只在按钮的 onClick 事件上运行一次?

javascript - 删除 URL 链接 ie11