基于Bootstrap简单封装一个弹窗

4,450次阅读
没有评论

共计 710 个字符,预计需要花费 2 分钟才能阅读完成。

基于 Bootstrap 简单封装一个弹窗

背景

项目中选用了 Bootstrap 作为基础,但是自带的弹窗有点不满足需求,嗯,动手改一改。

弹窗是什么样

从一个 中文文档 中拔了一个 demo,弹出的效果也蛮不错的。弹出的同时还有遮罩层,点击遮罩层还可以关闭弹出,另外,编程方式也可以使用。

但是从监听的事件中,有几点不是很满足需求。

理想状态,点击 关闭 执行对应的回调,点击 确定 执行对应的回调,提供的事件中,只有 显示 关闭 两大类。

一个标准的封装

大概习惯了这样去封装一个类 -、-

var index = 0 // 标记

// 每个 modal 唯一标识,避免重复
function nextId() {return 'biu-bs-modal-' + index++}

function modalClass() {}

modalClass.prototype = {
    constructor: modalClass,
    init: init() {}
}

基本的想法是,js 手动拼一个弹出的 html,然后追加到 body 的尾部,然后使用 js 的方式弹出、打开弹出层。

遇见的问题

1. 点击遮罩层关闭弹窗,怎么办呢

在弹窗配置中 backdrop 取消它就不会有遮罩层,但是,不符合需求。

那么,就自己搞一个遮罩层,然后使用自带的遮罩层的样式。

2. 点击确定,需要根据接口判断是否关闭弹出层

部分业务中存在确定事件并不一样每次都会关闭弹出层,例如一些数据交互的地方。

没办法咯,只好使用 jQuery 自带的 deferred 来解决咯。

3. 快速生成一个弹窗

经常会遇见一些需求,例如只是弹出一句话,例如原生的 alert 那样的,但是,每次都要写一个完整的配置项,似乎很麻烦。

于是,用一个方法在简单分装一下,快速生成对应的配置。

代码

点击查看

正文完
 0
评论(没有评论)
验证码