zoukankan      html  css  js  c++  java
  • 对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

  • 相关阅读:
    DXF文件格式理解
    Qt Creator调试命令行参数
    qt编译错误:invalid new-expression of abstract class type "*"
    dxf文件解析库libdxf初探
    ubuntu linux编译libdxfrw
    CAD DWG/DXF文件C++解析库libdxfrw
    AutoCAD版本dxf文件与dxflib解析库支持探索
    Linux 6种日志查看方法(转)
    码率、分辨率、帧率和画质计算单位时间码流大小(转)
    纯手工打造车载车牌识别检测系统(转)
  • 原文地址:https://www.cnblogs.com/xiaoshi657/p/4832877.html
Copyright © 2011-2022 走看看