繁体   English   中英

如何更改字体真棒图标和按钮类 onclick?

[英]How do I change font awesome icon and button class onclick?

如何更改按钮类和字体真棒图标 onclick? 当我点击按钮时,类和图标应该改变,反之亦然。

<button type="button" id="btn_hideshow" data-id="{{$user->id}}" class="btn btn-primary btn-sm btn_hideshow">
  <i class="fa fa-eye"></i>
</button>
$(function() {
  $(".btn_hideshow").click(function() {
    let id = $(this).data('id');
    $.ajax({
      url: "/user-hide-show/" + id,
      method: "POST",
      data: {
        'id': id
      },
      dataType: "json",
      success: function(data) {
        if ($("button#btn_hideshow").hasClass() == "btn btn-primary btn-sm") {
          $("button#btn_hideshow").removeClass("btn btn-primary btn-sm").addClass("btn btn-info btn-sm")
            .append().html("<i class='fa fa-eye-slash'><i/>")
        } else {
          $("button#hideAndShow").removeClass("btn btn-info btn-sm").addClass("btn btn-primary btn-sm").append().html("<i class='fa fa-eye'><i/>")
        }
      }
    });
  });
});

假设您的 AJAX 调用正常,那么问题出在if语句中。 hasClass()返回一个布尔值,但您试图将其与要搜索的类字符串进行比较。 相反,字符串需要作为函数的参数提供,例如:

if ($("button#btn_hideshow").hasClass("btn-primary") {   

话虽如此,但有一种更好的方法可以满足您的需求。

由于btnbtn-sm类始终存在于元素上,因此它们可以从您的逻辑中删除。 所有的,那么你需要做的就是切换的btn-primarybtn-info的类别button 类似地,子<i>元素可以保留而不是删除/重新添加,并且可以切换fa-eyefa-eye-slash类。 因此,试试这个:

// outside AJAX callback:
let $button = $("#btn_hideshow");

// inside AJAX callback:
$button.toggleClass('btn-primary btn-info').find('i').toggleClass('fa-eye-slash fa-eye')

暂无
暂无

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

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