• 对bootstrap中confirm alert进行封装


    效果图:

    HTML:

    <!-- system modal start -->
        <div id="ycf-alert" class="modal">
          <div class="modal-dialog modal-sm">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
                <h5 class="modal-title"><i class="fa fa-exclamation-circle"></i> [Title]</h5>
              </div>
              <div class="modal-body small">
                <p>[Message]</p>
              </div>
              <div class="modal-footer" >
                <button type="button" class="btn btn-primary ok" data-dismiss="modal">[BtnOk]</button>
                <button type="button" class="btn btn-default cancel" data-dismiss="modal">[BtnCancel]</button>
              </div>
            </div>
          </div>
        </div>
      <!-- system modal end -->

    不多说了,都是bootstrap modal的样式,不熟悉的朋友可以查查 bootstrap css ,中括号[....]的内容会最终替换为我们传入的参数显示。

    js 封装如下:

    $(function () {
      window.Modal = function () {
        var reg = new RegExp("\[([^\[\]]*?)\]", 'igm');
        var alr = $("#ycf-alert");
        var ahtml = alr.html();
    
        //关闭时恢复 modal html 原样,供下次调用时 replace 用
        //var _init = function () {
        //    alr.on("hidden.bs.modal", function (e) {
        //        $(this).html(ahtml);
        //    });
        //}();
    
        /* html 复原不在 _init() 里面做了,重复调用时会有问题,直接在 _alert/_confirm 里面做 */
    
    
        var _alert = function (options) {
          alr.html(ahtml);    // 复原
          alr.find('.ok').removeClass('btn-success').addClass('btn-primary');
          alr.find('.cancel').hide();
          _dialog(options);
    
          return {
            on: function (callback) {
              if (callback && callback instanceof Function) {
                alr.find('.ok').click(function () { callback(true) });
              }
            }
          };
        };
    
        var _confirm = function (options) {
          alr.html(ahtml); // 复原
          alr.find('.ok').removeClass('btn-primary').addClass('btn-success');
          alr.find('.cancel').show();
          _dialog(options);
    
          return {
            on: function (callback) {
              if (callback && callback instanceof Function) {
                alr.find('.ok').click(function () { callback(true) });
                alr.find('.cancel').click(function () { callback(false) });
              }
            }
          };
        };
    
        var _dialog = function (options) {
          var ops = {
            msg: "提示内容",
            title: "操作提示",
            btnok: "确定",
            btncl: "取消"
          };
    
          $.extend(ops, options);
    
          console.log(alr);
    
          var html = alr.html().replace(reg, function (node, key) {
            return {
              Title: ops.title,
              Message: ops.msg,
              BtnOk: ops.btnok,
              BtnCancel: ops.btncl
            }[key];
          });
          
          alr.html(html);
          alr.modal({
             500,
            backdrop: 'static'
          });
        }
    
        return {
          alert: _alert,
          confirm: _confirm
        }
    
      }();
    });

    调用方法:

    // 四个选项都是可选参数
    Modal.alert(
      {
        msg: '内容',
        title: '标题',
        btnok: '确定',
        btncl:'取消'
      });
    
    // 如需增加回调函数,后面直接加 .on( function(e){} );
    // 点击“确定” e: true
    // 点击“取消” e: false
    Modal.confirm(
      {
        msg: "是否删除角色?"
      })
      .on( function (e) {
        alert("返回结果:" + e);
      });

    转自:http://www.tuicool.com/articles/mMNrIr

  • 相关阅读:
    部署至Oracle数据库的注意事项
    当在centos上面部署项目时,mysql的一些驱动安装不上,
    drf利用redis做缓存是发生一点错误提示
    python字符串前面加个u代表什么
    在学习数据分析时,安装anaconda时遇到一点问题
    在使用scrapy框架爬取sina时,常见保存
    在linux上scrapyd部署scrapy项目时出现service_identity,并且不能识别其中的一个opentype模块
    如何在mysql增加一个和root权限一样的用户,安排
    mysq的root密码忘记,原来还有更优雅的解法
    mysql远程连接阿里云的Ubuntu服务器
  • 原文地址:https://www.cnblogs.com/xiaoshi657/p/4832877.html
Copyright © 2020-2023  润新知