• jquery 按钮切换插件


    样式: 

    点击第二个按钮,弹出回调函数。然后改变颜色。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="t-Switch.css">
    </head>
    <body>
    
    <span class="switch switch-off" name="s_marketEnable" data-check="1" id="stwichBtn_1"></span>
    <span class="switch switch-off" name="s_marketEnable" data-check="1" id="stwichBtn_2"></span>
    <script src="jquery.min.js"></script>
    <script src="switch-button.js"></script>
    <script>
    //    回调函数
        function callback(dom) {
            var id = dom.attr('id');
            alert(id);
        }
    //    基于name取dom元素
        $('[name=s_marketEnable]').switchButton({callback:callback});
    </script>
    </body>
    
    </html>
    ;(function ($) {
    
        $.fn.switchButton = function (options) {
            var defaults = {
                target:$(this),
                callback:null
            };
            var opts = $.extend({},defaults,options);
            var _self = this;
            
            var swtichBtn = {
                init:function () {
                    var _this = this;
                    // 如果是多个按钮
                    if(opts.target.length >1){
                        $.map(opts.target,function (domEle,index) {
                            var id = $(domEle).attr('id');
                            if(!id){
                                id = "stwichBtn" + index
                                $(domEle).attr('id',id);
                            }
                            $('#' + id).on('click',function () {
                                _this.clickEvent(domEle);
                            })
                        })
                    }else{
                        $(_self).on('click',function () {
                            _this.bindEvent(opts.target);
                        })
                    }
    
                },
                clickEvent:function (domEle) {
                      var _this = this;
                      if($(domEle).hasClass('switch-on')){
                          _this.off($(domEle));
                      }else{
                          _this.on($(domEle));
                      }
                },
                bindEvent:function (dom) {
                    var _this = this;
                    if(dom.hasClass('switch-on')){
                        _this.off(dom);
                    }else{
                        _this.on(dom);
                    }
    
                },
                on:function (dom) {
                    dom.addClass('switch-on').removeClass('switch-off');
                    opts.callback && opts.callback(dom);
                },
                off:function (dom) {
                    dom.addClass('switch-off').removeClass('switch-on');
                    opts.callback && opts.callback(dom);
                }
            }
    
            swtichBtn.init(opts);
        }
    })(jQuery);
    [class|=switch]{
        display: block;
        position: relative;
        width: 50px;
        height: 20px;
        background-color: #ffffff;
        -webkit-border-radius:16px;
        -moz-border-radius:16px;
        border-radius:16px;
    }
    .switch:before {
        position: absolute;
        display: block;
        content: '';
        width: 19px;
        height: 19px;
        border:1px solid #bcbcbc;
        background-color: #fff;
        -webkit-border-radius:50%;
        -moz-border-radius:50%;
        border-radius:50%;
        cursor: pointer;
    }
    
    .switch-on {
        display: block;
        position: relative;
        width: 50px;
        height: 20px;
        background-color: #1a75ff;
        -webkit-border-radius:16px;
        -moz-border-radius:16px;
        border-radius:16px;
    }
    
    .switch-on:before{
        left:30px;
        transition: background-color 0.4s, left 0.2s;
    }
    
    .switch-off:before{
        left:0px;
        transition: background-color 0.4s, left 0.2s;
    }
    
    .switch-off {
        display: block;
        position: relative;
        width: 50px;
        height: 20px;
        background-color: #b0b0b0;
        -webkit-border-radius:16px;
        -moz-border-radius:16px;
        border-radius:16px;
    }

    如果是通过ajax渲染数据的,也是可以使用。但得在渲染完成后才能调用

    采用 Mock.js模拟数据,然后用ajax请求渲染到form表单里面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="t-Switch.css">
    </head>
    <body>
    <form>
    
    </form>
    <script src="jquery.min.js"></script>
    <script src="switch-button.js"></script>
    <script src="mock.js"></script>
    
    <script>
        var html = '';
        Mock.mock('/test/getData',{
            'lists|5': [{
                'id|+1': 1,
                'email': '@EMAIL'
            }]
        })
        $.ajax({
            url:'/test/getData',
        }).done(function (data,status,jqXHR) {
            var data = JSON.parse(data);
    
            data.lists.forEach(function(value,index){
                html += '<span class="switch switch-off" name="s_marketEnable" id="stwichBtn_'+  value.id+'"></span>';
            })
               $('form').html(html);
    //            数据渲染完调用
    //           $('form').children('.switch').switchButton({callback:callback});
               $('.switch').switchButton({callback:callback});
            });
    //    回调函数
        function callback(dom) {
            var id = dom.attr('id');
            alert("id:" + id);
        }
    
    </script>
    </body>
    
    </html>
  • 相关阅读:
    Sublime Text 3 Build 3143 可用License
    npm安装cnpm报错
    使用proxy来简单的实现一个观察者
    时间倒计时提醒
    JavaScript设计模式
    异步方法(promise版)出错自调用
    co模块源码学习笔记
    go new() 和 make() 的区别
    广度优先搜索算法
    并发和并行有什么区别?(转)
  • 原文地址:https://www.cnblogs.com/xiaoxiaossrs/p/7565318.html
Copyright © 2020-2023  润新知