【问题标题】:Toggle icon color and change attribute?切换图标颜色和更改属性?
【发布时间】:2014-11-10 09:28:46
【问题描述】:

我正在使用这样的字体图标

<i class="fa fa-camera-retro fa-2x" data-permisssion="access" data-permission-value="true"></i>  
<i class="fa fa-area-chart fa-2x" data-permisssion="file" data-permission-value="false"></i>  
<i class="fa fa-cc-mastercard fa-2x" data-permisssion="loop" data-permission-value="true"></i>  

我需要在页面加载到所有具有 data-permission-value = false 的图标为红色,其他为绿色,但当用户切换该图标以更改值时为 true 并将颜色更改为绿色。当用户再次单击图标以将该值恢复为 false 并将颜色更改为红色时?

这是工作小提琴 http://jsfiddle.net/DTcHh/1714/

【问题讨论】:

    标签: jquery twitter-bootstrap-3 toggle


    【解决方案1】:

    您可以在字体真棒图标中使用自己的类。 所以只需创建这两个 css 类:

    .redIcon{
        color: red;
    
    }
    .greenIcon{
        color:green;
    }
    

    创建了一个click函数来演示data-permission的值变化。由于您不想更改所有字体真棒图标,请添加另一个类,例如 toggableIcon 到那些应该是可切换的......

    $(".toggableIcon").click(function(){
       if($(this).attr("data-permission-value")=="true")
    {
        $(this)
            .attr("data-permission-value", "false")
            .removeClass("greenIcon")
            .addClass("redIcon"); 
    }else{
        $(this)
            .attr("data-permission-value", "true")
            .removeClass("redIcon")
            .addClass("greenIcon"); 
    }
    
    });
    

    对于颜色类的初始设置,到:

    $(".toggableIcon").each(function(){
     if($(this).attr("data-permission-value")=="true")
     {
          $(this).addClass("greenIcon"); 
     }else{
         $(this).addClass("redIcon"); 
     }
    });
    

    在这里查看小提琴:http://jsfiddle.net/DTcHh/1725/

    【讨论】:

    • 我知道这一点,但这不是我问题的完整答案,请阅读关于添加值 true 和 false 的内容
    • 在图标上添加了一个点击功能,向您展示如何切换颜色和值...我还更改了您的 html,以使新类已经初始加载。但你也可以通过 document.ready 上的 js 来做到这一点
    • 另一个更新,只在那些图标上使用点击功能,你希望它......
    • 但这不会改变 data-permission-value
    • 对不起我的错误,但我不想手动添加,我想检查值而不是添加类,这样我必须手动添加?
    【解决方案2】:

    试试这个:

    $(document).ready(function(){
     $(".fa").each(function(){
      if ($(this).attr('data-permission-value')) {
       var permisssion = $(this).data("permission-value");
       if(permisssion) {
        $(this).addClass("enable");
       } else {
        $(this).addClass("disable");
       }
      }
     })
     $(".fa").click(function(){
      if ($(this).attr('data-permission-value')) {
       var permisssion = $(this).data("permission-value");
       if(permisssion) {
        $(this).data("permission-value", false);
        $(this).addClass("disable");
        $(this).removeClass("enable");
       } else {
        $(this).data("permission-value", true);
        $(this).removeClass("disable");
        $(this).addClass("enable");
       }
      }
     });
    });
    

    和css

    i.disable {
      color:red
    }
    i.enable {
      color:green
    }
    

    【讨论】:

    • 这将对所有我不想要的我只需要具有数据属性权限值的我做出反应
    • 正如我所说我不想要所有 .fa 类:((
    • 添加数据属性存在与否的条件
    • 这在第一次点击时不起作用,我必须点击两次才能使其起作用:(
    猜你喜欢
    • 2019-08-13
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2020-02-23
    相关资源
    最近更新 更多