38

我在 jquery 中有一个简单的脚本,可以在单击 a 时切换 div(显示和隐藏)<p>(我正在使用引导程序)。

HTML:

<p id="click_advance"><i class="icon-circle-arrow-down"></i> Advanced search</p>
<div id="display_advance">
    <p>This is the advance search</p>
</div>

JS:

$('#click_advance').click(function(){
$('#display_advance').toggle('1000');
$(this).html('<i class="icon-circle-arrow-up"></i> Advanced search');

});

因此,当我第一次单击时,图标从下变为上,但显然当我再次单击“click_advance”时,图标不会变回。所以我想要像显示和隐藏这样的切换效果;但我对如何使用图标一无所知。

4

6 回答 6

111

而不是每次都覆盖html,只需切换类。

$('#click_advance').click(function() {
    $('#display_advance').toggle('1000');
    $("i", this).toggleClass("icon-circle-arrow-up icon-circle-arrow-down");
});
于 2013-03-11T18:29:58.807 回答
9

如果您的图标基于块中的文本(连字)而不是块的类,那么以下将起作用。此示例使用 Google Material Icons 的“+”和“-”图标作为 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');
    }
});

编辑:);添加了使其正常运行所需的缺失。

它也适用于 JQuery post 1.9,其中不推荐使用函数切换。

于 2015-12-13T18:55:13.227 回答
7

试试这个:

$('#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");
  }
})

甚至更好,正如凯文所说:

$('#click_advance').click(function(){
  $('#display_advance').toggle('1000');
  icon = $(this).find("i");
  icon.toggleClass("icon-circle-arrow-up icon-circle-arrow-down")
})
于 2013-03-11T18:30:35.663 回答
4

如果 .toggle 不起作用,我会执行以下操作:

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;
    }
}

代码有点多,但它有效

于 2013-03-11T18:30:17.757 回答
1

这是一个非常简单的方法

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

希望这会有所帮助:D

于 2016-05-13T12:57:49.253 回答
0
$("#togglebutton").click(function () {
  $(".fa-arrow-circle-left").toggleClass("fa-arrow-circle-right");
}

我有一个 ID 为“togglebutton”的按钮和一个来自 FontAwesome 的图标。这可以是一种切换它的方法。从左箭头到右箭头图标

于 2020-04-17T18:08:53.307 回答