jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)


Posted in Javascript onApril 10, 2014

我们在天猫进行购物的时候,经常会碰到单击删除按钮或者登陆按钮后,弹出对话框问你是否删除或者弹出一个登陆对话框,并且我们也是可以看到我们之前页面的信息,就是点击不了,只有对对话框进行操作后才有相应的变化。截图如下(以天猫为例) 
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框) 
如图所示,上面就是天猫的效果图,其实这就是通过jQuery实现的,并且实现的过程也不是很不复杂,那么现在就让我们来看看实现的过程吧。

首先是页面的布局部分:delete.html

<!DOCTYPE html> 
<html> 
<head> 
<title>遮罩弹出窗口</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="this is my page"> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<link rel="stylesheet" type="text/css" href="../css/delete.css"> 
<script type="text/javascript" src="../js/jquery-1.10.2.js"></script> 
<script type="text/javascript" src="../js/delete.js"></script> 
</head> 
<body> 
<div class="divShow"> 
<input type="checkbox" id="chexkBox1"> <a href="#">这是一条可以删除的记录</a> 
<input id="button1" type="button" value="删除" class="btn"> 

</div> 

<div class="mask"></div> 
<div class="dialog"> 
<div class="title"> 
<img alt="点击可以关闭" src="../images/delete.gif" width="30px" height="30px;"> 
删除时提示 
</div> 
<div class="content"> 
<img alt="" src="../images/delete.gif" width="60px" height="60px"> 
<span>你真的要删除这条记录吗?</span> 
</div> 
<div class="bottom"> 
<input type="button" id="ok" value="确定" class="btn"> 
<input type="button" id="noOk" value="取消" class="btn"> 
</div> 
</div> 
</body> 
</html>

需要做出说明的是,我只添加了一条记录,其实可以模拟多条记录的删除。这里我们有三层div结构,其中mask和dialog使我们通过jquery进行触发的,接下来我们讲下css的布局,先上代码:delete.html
@CHARSET "UTF-8"; 
*{ 
margin: 0px; 
padding: 0px; } 
.divShow{ 
line-height: 32px; 
height: 32px; 
background-color: #eee; 
width: 280px; 
padding-left: 10px; 
} 

.dialog{ 
width: 360px; 
border: 1px #666 solid; 
position: absolute; 
display: none; 
z-index: 101;//保证该层在最上面显示 
} 
.dialog .title{ 
background:#fbaf15; 
padding: 10px; 
color: #fff; 
font-weight: bold; 
} 
.dialog .title img{ 
float:right; 
} 
.dialog .content{ 
background: #fff; 
padding: 25px; 
height: 60px; 
} 
.dialog .content img{ 
float: left; 
} 
.dialog .content span{ 
float: left; 
padding: 10px; 
} 

.dialog .bottom{ 
text-align: right; 
padding: 10 10 10 0; 
background: #eee; 
} 
.mask{ 
width: 100%; 
height: 100%; 
background: #000; 
position: absolute; 
top: 0px; 
left: 0px; 
display: none; 
z-index: 100; 
} 
.btn{ 
border: #666 1px solid; 
width: 65px; 
}

在CSS文件中,我需要着重说明的是z-index的使用,z-index表示的层的堆叠顺序,如果数值越高,表示越在上层显示,mask的z-index是100,dialog的z-index是101,数值足够大的原因就是保证绝对在顶层显示,通过数值的调增可以控制div层的显示。

接下来就是最为主要的js代码,当然在使用jquery时,我们要导入jquery包:<script type="text/javascript" src="../js/jquery-1.10.2.js"></script>

delete.js

$(function(){ //绑定删除按钮的触发事件 
$("#button1").click(function(){ 
$(".mask").css("opacity","0.3").show(); 
showDialog(); 
$(".dialog").show(); 
}); 
/* 
* 根据当前页面于滚动条的位置,设置提示对话框的TOP和left 
*/ 
function showDialog(){ 
var objw=$(window);//当前窗口 
var objc=$(".dialog");//当前对话框 
var brsw=objw.width(); 
var brsh=objw.height(); 
var sclL=objw.scrollLeft(); 
var sclT=objw.scrollTop(); 
var curw=objc.width(); 
var curh=objc.height(); 
//计算对话框居中时的左边距 
var left=sclL+(brsw -curw)/2; 
var top=sclT+(brsh-curh)/2; 
//设置对话框居中 
objc.css({"left":left,"top":top}); 
} 
//当页面窗口大小改变时触发的事件 
$(window).resize(function(){ 
if(!$(".dialog").is(":visible")){ 
return; 
} 
showDialog(); 
}); 
//注册关闭图片单击事件 
$(".title img").click(function(){ 
$(".dialog").hide(); 
$(".mask").hide(); 
}); 
//取消按钮事件 
$("#noOk").click(function(){ 
$(".dialog").hide(); 
$(".mask").hide(); 
}); 
//确定按钮事假 
$("#ok").click(function(){ 
$(".dialog").hide(); 
$(".mask").hide(); 
if($("input:checked").length !=0){ 
//注意过滤器选择器中间不能存在空格$("input :checked")这样是错误的 
$(".divShow").remove();//删除某条数据 
} 
}); 

});<span style="white-space:pre">

需要说明的是主要代买就是showDialog()的用于动态的确定对话框的显示位置。
Javascript 相关文章推荐
Open and Print a Word Document
Jun 15 Javascript
jquery数组之存放checkbox全选值示例代码
Dec 20 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
Bootstrap中的Panel和Table全面解析
Jun 13 Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
angularjs结合html5实现拖拽功能
Jun 25 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 Javascript
记录vue项目中遇到的一点小问题
May 14 Javascript
layui表格内放置图片,并点击放大的实例
Sep 10 Javascript
Vue+Flask实现图片传输功能
Apr 01 Vue.js
jquery获取复选框被选中的值
Apr 10 #Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
Apr 10 #Javascript
用js设置下拉框为只读的小技巧
Apr 10 #Javascript
js获取上传文件大小示例代码
Apr 10 #Javascript
JavaScript中双叹号(!!)作用示例介绍
Apr 10 #Javascript
js实现图片旋转的三种方法
Apr 10 #Javascript
javascript:void(0)的问题使用探讨
Apr 10 #Javascript
You might like
WHOIS类的修改版
2006/10/09 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
初识Javascript小结
2015/07/16 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
高中课前三分钟演讲稿
2014/09/13 职场文书
抗洪救灾标语
2014/10/08 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
辞职申请书范本
2019/05/20 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers