Change icon on click (toggle)

后端 未结 6 2002
失恋的感觉
失恋的感觉 2020-12-23 10:10

I have a simple script in jquery to toggle a div (show and hide) when a

is clicked (I\'m using bootstrap).

HTML:

相关标签:
6条回答
  • 2020-12-23 10:27

    Here is a very easy way of doing that

     $(function () {
        $(".glyphicon").unbind('click');
        $(".glyphicon").click(function (e) {
            $(this).toggleClass("glyphicon glyphicon-chevron-up glyphicon glyphicon-chevron-down");
    });
    

    Hope this helps :D

    0 讨论(0)
  • 2020-12-23 10:28

    Instead of overwriting the html every time, just toggle the class.

    $('#click_advance').click(function() {
        $('#display_advance').toggle('1000');
        $("i", this).toggleClass("icon-circle-arrow-up icon-circle-arrow-down");
    });
    
    0 讨论(0)
  • 2020-12-23 10:33

    If your icon is based on the text in the block (ligatures) rather the class of the block then the following will work. This example uses the Google Material Icons '+' and '-' icons as part of MaterializeCSS.

    <a class="btn-class"><i class="material-icons">add</i></a>
    
    $('.btn-class').on('click',function(){
        if ($(this).find('i').text() == 'add'){
            $(this).find('i').text('remove');
        } else {
            $(this).find('i').text('add');
        }
    });
    

    Edit: Added missing ); needed for this to function properly.

    It also works for JQuery post 1.9 where toggling of functions was deprecated.

    0 讨论(0)
  • 2020-12-23 10:34
    $("#togglebutton").click(function () {
      $(".fa-arrow-circle-left").toggleClass("fa-arrow-circle-right");
    }
    

    I have a button with the id "togglebutton" and an icon from FontAwesome . This can be a way to toggle it . from left arrow to right arrow icon

    0 讨论(0)
  • 2020-12-23 10:38

    If .toggle is not working I would do the next:

    var flag = false;
    $('#click_advance').click(function(){
        if( flag == false){
           $('#display_advance').show('1000');
             // Add more code
           flag = true;
        }
        else{
           $('#display_advance').hide('1000');
           // Add more code
           flag = false;
        }
    }
    

    It's a little bit more code, but it works

    0 讨论(0)
  • 2020-12-23 10:41

    Try this:

    $('#click_advance').click(function(){
      $('#display_advance').toggle('1000');
      icon = $(this).find("i");
      icon.hasClass("icon-circle-arrow-down"){
        icon.addClass("icon-circle-arrow-up").removeClass("icon-circle-arrow-down");
      }else{
        icon.addClass("icon-circle-arrow-down").removeClass("icon-circle-arrow-up");
      }
    })
    

    or even better, as Kevin said:

    $('#click_advance').click(function(){
      $('#display_advance').toggle('1000');
      icon = $(this).find("i");
      icon.toggleClass("icon-circle-arrow-up icon-circle-arrow-down")
    })
    
    0 讨论(0)
提交回复
热议问题