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 相关文章推荐
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
基于JavaScript获取鼠标位置的各种方法
Dec 16 Javascript
JS判断微信扫码的方法
Aug 07 Javascript
node.js学习之事件模块Events的使用示例
Sep 28 Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 Javascript
vue项目打包上传github并制作预览链接(pages)
Apr 19 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
详解JavaScript原型与原型链
Nov 16 Javascript
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
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
jQuery live
2009/05/15 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
javascript中new关键字详解
2015/12/14 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
解读ES6中class关键字
2017/11/20 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Python接口测试文件上传实例解析
2020/05/22 Python
学生自我鉴定范文
2013/10/04 职场文书
生产主管岗位职责
2013/11/10 职场文书
《学棋》教后反思
2014/04/14 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
集中采购方案
2014/06/10 职场文书
父亲节活动策划方案
2014/08/24 职场文书