前言

Bootstrap:Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架

官方网站:http://www.bootcss.com/

1.Bootstrap Modals(模态框)基本用法

使用bootstrap之前需要应用jquery.js和bootstrap.js以及bootstrap.css 注意:最新版的bootstrap需要和jquery1.9以上版本配合使用

    <!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal"
data-target="#myModal">
开始演示模态框
</button>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal" aria-hidden="true">
&times;
</button>
<h4 class="modal-title" id="myModalLabel">
模态框(Modal)标题
</h4>
</div>
<div class="modal-body">
在这里添加一些文本
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">
关闭
</button>
<button type="button" class="btn btn-primary">
提交更改
</button>
</div>
</div>
</div>
</div>

当我们点击button的时候会触发Modal,效果如下图所示

2.0先看我们的封装代码

$(function () {
if ($.fn.modal) {
$.fn.modal.defaults.spinner = $.fn.modalmanager.defaults.spinner =
'<div class="loading-spinner" style="width: 200px; margin-left: -100px;">' +
'<div class="progress progress-striped active">' +
'<div class="progress-bar" style="width: 100%;"></div>' +
'</div>' +
'</div>'; $.fn.modalmanager.defaults.resize = true;
} window.Modal = function () {
var _tplHtml = '<div class="modal created-modal" id="[Id]">' +
'<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="icon-exclamation-sign"></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>'; var _tplLoadHtml = '<div class="modal created-modal" id="[Id]">' +
'<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">[Title]</h5>' +
'</div>' +
'<div class="modal-body small">' +
'<iframe src="[Url]" frameborder="0" width="100%" height="[Height]px" style="padding:0px; margin:0px;"></iframe>' +
'</div>' +
'</div>'; var reg = new RegExp("\\[([^\\[\\]]*?)\\]", 'igm'); var _alert = function (options) {
var id = _dialog(options);
var modal = $('#' + id);
modal.find('.ok').removeClass('btn-success').addClass('btn-primary');
modal.find('.cancel').hide(); return {
id: id,
on: function (callback) {
if (callback && callback instanceof Function) {
modal.find('.ok').click(function () { callback(true); });
}
},
hide: function (callback) {
if (callback && callback instanceof Function) {
modal.on('hide.bs.modal', function (e) {
callback(e);
});
}
}
};
}; var _confirm = function (options) {
var id = _dialog(options);
var modal = $('#' + id);
modal.find('.ok').removeClass('btn-primary').addClass('btn-success');
modal.find('.cancel').show(); return {
id: id,
on: function (callback) {
if (callback && callback instanceof Function) {
modal.find('.ok').click(function () { callback(true); });
modal.find('.cancel').click(function () { callback(false); });
}
},
hide: function (callback) {
if (callback && callback instanceof Function) {
modal.on('hide.bs.modal', function (e) {
callback(e);
});
}
}
};
}; var _load = function (options) {
var ops = {
url: '',
title: '',
width: ,
height:
};
$.extend(ops, options);
var modalId = _getId();
var html = _tplLoadHtml.replace(reg, function (node, key) {
return {
Id: modalId,
Title: ops.title,
Url: ops.url,
Height: ops.height
}[key];
}); $('body').append(html);
var modal = $('#' + modalId).modal({
width: ops.width
}); $('#' + modalId).on('hide.bs.modal', function (e) {
$(this).parent('.modal-scrollable').next().remove();
$(this).parent('.modal-scrollable').remove();
$('body').modalmanager('toggleModalOpen');
});
} var _getId = function () {
var date = new Date();
return 'mdl' + date.valueOf();
} var _dialog = function (options) {
var ops = {
msg: "提示内容",
title: "操作提示",
btnok: "确定",
btncl: "取消",
width: ,
auto: false
}; $.extend(ops, options); var modalId = _getId(); var html = _tplHtml.replace(reg, function (node, key) {
return {
Id: modalId,
Title: ops.title,
Message: ops.msg,
BtnOk: ops.btnok,
BtnCancel: ops.btncl
}[key];
}); $('body').append(html);
$('#' + modalId).modal({
width: ops.width,
backdrop: 'static'
}); $('#' + modalId).on('hide.bs.modal', function (e) {
//$(this).parent('.modal-scrollable').next().remove();
//$(this).parent('.modal-scrollable').remove();
$('body').modalmanager('toggleModalOpen');
}); return modalId;
} var _cancelCheckbox = function () {
//设置取消样式
$(".datagrid-header-check .checker").find("span").attr("class", "");//取消头部第一个checkbox的样式
$(".datagrid-cell-check .checker").find("span").attr("class", "");//取消列表选中checkbox的样式
$(".datagrid-btable").find("tr").attr("class", "datagrid-row");//取消选中行的样式
$(":checkbox:checked").attr("checked", false); //取消所有选中状态
}; return {
alert: _alert,
confirm: _confirm,
load: _load,
cancelcheck: _cancelCheckbox,
loading: function () {
$('body').modalmanager('loading');
},
removeLoading: function () {
$('body').modalmanager('removeLoading');
}
} }(); });

3.0接下来看我们的案例代码

@{
Layout = null;
}
//这里引入的文件要按照顺序
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/bootstrap/js/bootstrap.min.js"></script>
<script src="~/Scripts/bootstrap-modal/js/bootstrap-modal.js"></script>
<script src="~/Scripts/bootstrap-modal/js/bootstrap-modalmanager.js"></script>
<script src="~/Scripts/feng_modal.js"></script>
<link href="~/Scripts/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="~/Scripts/bootstrap-modal/css/bootstrap-modal.css" rel="stylesheet" />
<link href="~/Scripts/bootstrap-modal/css/bootstrap-modal-bs3patch.css" rel="stylesheet" />
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div style="margin:500px" >
<button type="button" class="btn btn-primary" onclick="testalert()">测试alert</button>
<button type="button" class="btn btn-success" onclick="testload()">测试load</button>
<button type="button" class="btn btn-warning" onclick="testconfirm()">测试confirm</button>
<button type="button" class="btn btn-danger">测试</button>
</div>
</body>
</html> <script type="text/javascript"> function testalert() {
Modal.alert({msg:"测试"});
} function testload() {
Modal.load({ msg: "测试", url: "/Home/GetMsg/", title: "远程加载页面", width: , height: });
} function testconfirm() {
Modal.confirm({ msg: "确认要加载吗?" }).on(function (e) {
if (e) {
Modal.load({ msg: "测试", url: "/Home/GetMsg/", title: "远程加载页面", width: , height: });
}
});
} </script>

4.0看我们达到的效果

【原创】基于Bootstrap的Modal二次封装的更多相关文章

  1. python+selenium十:基于原生selenium的二次封装

    from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium ...

  2. 利用bootstrap的modal组件自定义alert,confirm和modal对话框

    由于浏览器提供的alert和confirm框体验不好,而且浏览器没有提供一个标准的以对话框的形式显示自定义HTML的弹框函数,所以很多项目都会自定义对话框组件.本篇文章介绍自己在项目中基于bootst ...

  3. 基于bootstrap模态框的alert弹窗

    完成的效果如下: html代码: <!-- 弹出框 --> <div class="modal fade" id="alert_like" t ...

  4. OkGo3.0 --真实项目使用和二次封装(转)

    转载:https://blog.csdn.net/jiushiwo12340/article/details/79011480  11.OkGo3.0真实项目使用和二次封装: ====  11.OkG ...

  5. python+selenium十:selenium的二次封装

    python+selenium十:基于原生selenium的二次封装   from selenium import webdriverfrom selenium.webdriver.support.w ...

  6. 基于bootstrap table配置的二次封装

    准备 jQuery js css 引用完毕 开始 如果对bootstrap table 的方法与事件不熟悉: Bootstrap table方法,Bootstrap table事件 <table ...

  7. 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil

    基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...

  8. 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm

    前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...

  9. android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件

    网络请求是全部App都不可缺少的功能,假设每次开发都重写一次网络请求或者将曾经的代码拷贝到新的App中,不是非常合理,出于此目的,我希望将整个网络请求框架独立出来,与业务逻辑分隔开,这样就能够避免每次 ...

随机推荐

  1. web项目文件夹上传

    最近公司做工程项目,实现文件夹上传 网上找了很久,发现网上很多代码大都存在很多问题,不过还是让我找到了一个符合要求的项目. 对项目的文件夹上传功能做出分析,找出文件夹上传的原理,对文件夹的传输模式深入 ...

  2. C++类、继承、多态、虚函数

    一个比较好的虚函数例子 /****************************/ /* 作者:骆天 */ /* 时间:2018/1/26 */ /* 代码:多态的理解 */ /********** ...

  3. (转)Memcache内存分配策略

    转自:http://hi.baidu.com/software_one/item/0a0a6712dc7a319899ce33e0 一.Memcache内存分配机制 关于这个机制网上有很多解释的,我个 ...

  4. Leetcode--136. Single Number(easy)

    Given a non-empty array of integers, every element appears twice except for one. Find that single on ...

  5. java基础-day17

    第06天 集合 今日内容介绍 u  集合&迭代器 u  增强for & 泛型 u  常见数据结构 u  List子体系 第1章   集合&迭代器 1.1  集合体系结构 1.1 ...

  6. mysql 中 datetime和 timestamp的区别

    DATETIME日期和时间的组合.支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DA ...

  7. js五道经典练习题--第一道

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  8. 分形之谢尔宾斯基(Sierpinski)三角形

    谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集.也有的资料将其称之为谢尔宾斯基坟垛. 其生成过程为: 取一个 ...

  9. [ASE][Daily Scrum]11.06

    我们的<坦克大战·无尽>正式开始动工了,今天的任务计划如下~ [Plan] View Shilin Liu 搭建好开发环境 收集素材         Control Jiafan Zhu ...

  10. 10 个免费的Bootstrap Admin 主题,模板收集

    In designing websites today, one of the must have frameworks is the twitter bootstrap. To those who ...