简体   繁体   English

单击事件后更改字体真棒图标

[英]Change font awesome icon after click event

In the html, I have links to two font-awesome icons, a plus and a minus. 在html中,我有两个超赞字体图标的链接,一个加号和一个减号。 I want the plus icon ONLY to load first. 我只希望加号图标首先加载。 When the plus icon is clicked, it runs a function and opens a vertical navigation bar. 单击加号图标后,它将运行一个功能并打开垂直导航栏。 At this stage, I would like the plus icon to change to the minus. 在此阶段,我希望加号图标变为减号。 Then, when the minus icon is clicked, the bar closes and the icon will change back to the plus. 然后,当单击减号图标时,该栏关闭,该图标将变回加号。

This is the html: 这是html:

 <nav>
     <a href="#"><i class="fa fa-plus-circle" style="font-size:20px;"></i></a>
     <a href="#"><i class="fa fa-minus-circle" style="font-size:20px;"></i></a>
 </nav>

And this is the js: 这是js:

var clicked = false;
$('.fa-plus-circle').click(function() {
    if (clicked == false) {
      $('div.vertical-nav').animate({
        'right': 0
      });
      clicked = true;

    } else {
      $('div.vertical-nav').animate({
        'right': -250
      });
      clicked = false;
    }

  });

})

You don't need to have two links and two icons, just change the icon (note I've added a neutral class, toggler ): 您不需要两个链接和两个图标,只需更改图标即可(请注意,我添加了一个中性类toggler ):

<nav>
     <a href="#"><i class="fa toggler fa-plus-circle" style="font-size:20px;"></i></a>
</nav>

Then toggle the two classes, and they'll alternate (see *** comments): 然后切换两个类,它们将交替出现(请参阅***注释):

var clicked = false;
$('.toggler').click(function() { // ***
    if (clicked == false) {
        $('div.vertical-nav').animate({
            'right': 0
        });
        clicked = true;

    }
    else {
        $('div.vertical-nav').animate({
            'right': -250
        });
        clicked = false;
    }
    $(this).toggleClass("fa-plus-circle fa-minus-circle"); // ***
});

Example: 例:

 var clicked = false; $('.toggler').click(function() { // *** if (clicked == false) { $('div.vertical-nav').animate({ 'right': 0 }); clicked = true; } else { $('div.vertical-nav').animate({ 'right': -250 }); clicked = false; } $(this).toggleClass("fa-plus-circle fa-minus-circle"); // *** }); 
 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <nav> <a href="#"><i class="fa toggler fa-plus-circle" style="font-size:20px;"></i></a> </nav> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 


Side note: That function can be a lot simpler and doesn't need the clicked variable: 旁注:该函数可以简单得多,不需要clicked变量:

$('.toggler').click(function() {
    var $this = $(this);
    var toggled = $this.hasClass("fa-minus-circle");
    $('div.vertical-nav').animate({
        'right': toggled ? -250 : 0
    });
    $this.toggleClass("fa-plus-circle fa-minus-circle");
});

(Of course, you can keep clicked if you want it for something else...) (当然,如果您需要其他功能,可以继续clicked ...)

Example: 例:

 $('.toggler').click(function() { var $this = $(this); var toggled = $this.hasClass("fa-minus-circle"); $('div.vertical-nav').animate({ 'right': toggled ? -250 : 0 }); $this.toggleClass("fa-plus-circle fa-minus-circle"); }); 
 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <nav> <a href="#"><i class="fa toggler fa-plus-circle" style="font-size:20px;"></i></a> </nav> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

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

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