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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
js判断样式className同时增加class或删除class
Jan 30 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
鼠标焦点离开文本框时验证的js代码
Jul 19 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
Mar 18 Javascript
详解JavaScript逻辑Not运算符
Dec 04 Javascript
浅谈Javascript数组(推荐)
May 17 Javascript
Javascript中浏览器窗口的基本操作总结
Aug 18 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
package.json各个属性说明详解
Mar 11 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
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
php的正则处理函数总结分析
2008/06/20 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP中的string类型使用说明
2010/07/27 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中的字典遍历备忘
2015/01/17 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
携程英文网站:Trip.com
2017/02/07 全球购物
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
生日宴会策划方案
2014/06/03 职场文书
检讨书1000字
2014/10/11 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书