javascript - 具有各种不同图标问题的 JQuery 切换图标

标签 javascript jquery html toggleclass

我目前正在尝试设置一个带有图标切换的菜单,因此当单击一个图标时它会变为一个十字,然后当该十字被单击时它会变回原始图标。我已经做到这一点了,但是当我单击一个新图像时,我希望旧图标重置并将十字应用于新图标。

这是我得到的结果:

<div class="panel panel-default">
    <div class="panel-heading" role="tab" id="headingFive">
        <a class="collapsed faq-links">
            <i id="icon" class="fa fa-info-circle fa-3x"></i>
        </a>
    </div>
</div>
<br />
<div class="panel panel-default">
    <div class="panel-heading" role="tab" id="heading13">
        <a class="collapsed faq-links">
            <i id="icon" class="fa fa-heartbeat fa-3x"></i>
        </a>
    </div>       
</div>
<br />
<div class="panel panel-default">
    <div class="panel-heading" role="tab" id="headingFour">
        <a class="collapsed faq-links" >
            <i id="icon" class="fa fa-comments fa-3x"></i>
        </a>
    </div>
</div>

Javascript:

$('.faq-links').click(function(){
    var collapsed=$(this).find('i').hasClass('fa-info-circle');
    $('.faq-links').find('i').removeClass('fa-times');
    $('.faq-links').find('i').addClass('fa-info-circle');
    if(collapsed)
        $(this).find('i').toggleClass('fa-info-circle fa-3x fa-times fa-3x')
});

我已经设置了一个 JSFiddle 来展示它的工作 https://jsfiddle.net/BenjiBaird/yycf2jb8/1/

因此,当我点击信息圈时,会应用十字,而当我点击另一个时,十字会被移除。我该如何着手将其应用于每个图标。

如有任何帮助,我们将不胜感激,希望我说清楚了。

最佳答案

如果像这样向具有特定图标类名称的 anchor 标记添加数据属性

<a class="collapsed faq-links" data-icon-name="fa-info-circle">
  <i id="icon" class="fa fa-info-circle fa-3x"></i>
</a>

您可以使用该属性在“fa-times”和原始图标之间切换图标

查看下面的代码和 JSFiddle,了解它是如何工作的。代码中也存在效率低下的问题,即不断使用 .find('i'),但我会留给您为此提出解决方案。

$('.faq-links').click(function() {
  if ($(this).find('i').hasClass('fa-times')) { //then change back to the original one
    $(this).find('i').removeClass('fa-times').addClass($(this).data('icon-name'));
  } else {
    $('.faq-links').each(function(){ //Remove the cross from all other icons
        if($(this).find('i').hasClass('fa-times')) {
        $(this).find('i').removeClass('fa-times').addClass($(this).data('icon-name'));
      }
    });
    $(this).find('i').addClass('fa-times').removeClass($(this).data('icon-name'));
  }
}); 

fiddle 是 here

关于javascript - 具有各种不同图标问题的 JQuery 切换图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058632/

相关文章:

jquery - 尝试在 jquery 中设置动画时 div 的不当行为

javascript - 如何在javascript函数中写入html文件的路径

php - 使用 php 更新 json

html - 如何在悬停时清除 :before in a. 类 css 的文本装饰?

jquery - Plupload - 拖放事件

javascript - 元素中的 "data"属性

javascript - 是否可以按未查询的维度对 Google Analytics 数据进行排序?

javascript - 将外部 react 性 API 数据插入到 Meteor 集合中

javascript - 网络音频 : Karplus Strong String Synthesis

javascript - td中的对齐问题