Jquery iCheck

2019-08-22  本文已影响0人  七月_JulyFY

表单复选框、单选框控件美化插件

主要作用为:

渲染并美化当前页面的复选框或单选框
响应复选框或单选框的点击事件

页面引用

<!-- iCheck for checkboxes and radio inputs css-->
<link rel="stylesheet" href="/static/assets/plugins/iCheck/all.css">
<!-- iCheck 1.0.1 js-->
<script src="/static/assets/plugins/iCheck/icheck.min.js"></script>

激活 iCheck

默认情况下 iCheck 是不生效的,需要使用 JS 代码激活,此过程可以指定 iCheck 的皮肤,案例代码如下:
CSS 部分
<input type="checkbox" class="minimal" />
JS 部分
// 激活 iCheck
$('input[type="checkbox"].minimal, input[type="radio"].minimal').iCheck({
    checkboxClass: 'icheckbox_minimal-blue',
    radioClass   : 'iradio_minimal-blue'
});

回调事件

iCheck 提供了大量回调事件,都可以用来监听 change 事件
事件名称 使用时机
ifClicked 用户点击了自定义的输入框或与其相关联的 label
ifChanged 输入框的 checked 或 disabled 状态改变了
ifChecked 输入框的状态变为 checked
ifUnchecked checked 状态被移除
ifDisabled 输入框状态变为 disabled
ifEnabled disabled 状态被移除
ifCreated 输入框被应用了 iCheck 样式
ifDestroyed iCheck 样式被移除

使用 on() 方法绑定事件:

Example

$('input').on('ifChecked', function(event){
  alert(event.type + ' callback');
});

方法

下面这些方法可以用来通过编程方式改变输入框状态(可以使用任何选择器):

$('input').iCheck('check');:将输入框的状态设置为 checked

$('input').iCheck('uncheck');:移除 checked 状态

$('input').iCheck('toggle');:

$('input').iCheck('disable');:将输入框的状态设置为 disabled

$('input').iCheck('enable');:移除 disabled 状态

$('input').iCheck('update');:

$('input').iCheck('destroy');:移除 iCheck 样式

iCheck 抽取后

//ICheck工具类  用了dataTables init方法必须重绘-----统一的全选与反选 批量删除
var ICheck=function () {
    //批量选择框对象 class属性 icheck all
    var allCheck=$('input[type="checkbox"].icheck.all');
    //单个选择框对象 class属性 icheck each
    var eachCheck;
    //初始化ICheck
    var initICheck=function () {
        //初始化ICheck样式
        $('input[type="checkbox"].icheck').iCheck({
            checkboxClass: 'icheckbox_minimal-purple'
        });
    };
    //全选 反选
    var check=function () {
        eachCheck=$('input[type="checkbox"].icheck.each');
        //全选被点击时执行
        allCheck.on('ifClicked', function(e){
            //如果全选被选中
            if (!e.target.checked){
                //让其他也全选中
                eachCheck.iCheck('check');
            }
            else {
                eachCheck.iCheck('uncheck');
            }
        });
        //子选择框点击事件 触发主选择框
        eachCheck.on('ifClicked', function(e){
            var length=1;
            if(e.target.checked){
                allCheck.iCheck('uncheck');
            }
            else{
                eachCheck.each(function () {
                    if(($(this).prop("checked"))){
                        length++;
                    }
                });
                if(eachCheck.length===length){
                    allCheck.iCheck('check');
                }
            }
        })
    };
    //删除操作 多个删除与单个删除   url/删除的ajax请求地址  id/单删除时的id
    var delCheck=function (url,id) {
        var _idArray; //保存id的数组
        var l; //数组的长度
        del(url,id);

        //私有函数中的私有函数 只能这个私有函数调用
        function del(url,id){
            //获取选中的id并保存到数组_idArray
            _idArray=new Array();
            eachCheck.each(function () {
                // 判断是否选中
                var delFlag = $(this).is(":checked");
                if (delFlag) {
                    _idArray.push($(this).attr("id"));
                }
            });
            //保存单选时传的id  不为空时先清除打钩的
            if(id!=null&&id!=""){
                _idArray=[];
                _idArray.push(id);
            }
            l=_idArray.length;
            //没有选择删除项
            if (l===0){
                $("#modal-message").html("至少删除一项");
            }
            else{
                $("#modal-message").html("确定删除么");
            }
            //显示模态框
            $("#basic").modal("show");
        }
        //模态框点击确定操作
        $(".modal-footer .btn.green").bind("click",function () {
            if(l===0){
                $("#basic").modal("hide");
            }
            //有id时提交请求
            else{
                $.ajax({
                    "url":url,
                    "data":{"ids":_idArray.toString()},
                    "type":"POST",
                    "dataType":"JSON",
                    "success":function (data) {
                        $("#modal-message").html(data.message);
                        $(".modal-content .modal-footer").html("");
                        $("#basic").modal("show");
                        setTimeout(function () {
                            window.location.reload();
                        },500);
                    }
                });
            }
        });
    };

    return{
        init:function () {
            initICheck();
            check();
        },
        delCheck:function (url,id) {
            delCheck(url,id);
        }
    }
}();

jQuery(document).ready(function () {
    ICheck.init();
});

上一篇 下一篇

猜你喜欢

热点阅读