自己使用js/jquery写的一个定制对话框控件


Posted in Javascript onMay 02, 2014

最近在做一个游戏项目,项目里面很多需要用到对话框,而且得用上美工做的图片,这样的话好像就不好去找一些现成的对话框控件了,于是便琢磨着自己做一个通用的控件,虽然不是绝对通用啦,但在我这个项目里还是可以随意调用的,思想的话也可以借鉴到别的项目中。

先贴出主要代码:

//对话框的基本html内容,绝对定位,高宽设置,背景图片,标题,两个按钮图 
var tdlz_dialog_content = "<div id='tdlz_dialog" 
+ "' style='position:absolute;text-align:center;width:540px;height:331px;background:url(assets/images/add_fbc.png);'><ul><li id='dialog_lb_text' style='margin-top:100px;color:#fff;font-size:25px'>" 
+ "</li><li style='margin-top:100px;cursor:pointer'><img id='tdlz_dialog_ok' src='assets/images/queren.png'></img><img id='tdlz_dialog_cancel' src='assets/images/quxiao.png'></img></li></ul></div>"; 
//text:标题,type:对话框类型,funcOK:确定的执行函数,time:倒计时或alert显示的时间 
function showTdDialog(text, type, funcOK, time) { 
var dialogid = "#tdlz_dialog"; 
$(dialogid).show(500); 
$("#dialog_lb_text").html(text); 
switch (type) { 
case "show"://展示信息的对话框,带一个确定键,点击后消失 
$("#tdlz_dialog_cancel").hide(); 
$("#tdlz_dialog_ok").unbind(); 
$("#tdlz_dialog_ok").click(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}); 
break; 
case "alert"://警告对话框,time时间后消失 
$("#tdlz_dialog_cancel").hide(); 
$("#tdlz_dialog_ok").unbind(); 
setTimeout(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}, time); 
$("#tdlz_dialog_ok").click(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}); 
break; 
case "confirm"://确认对话框,带确认取消键,确认则执行函数,否则不执行并消失 
$("#tdlz_dialog_cancel").show(); 
$("#tdlz_dialog_ok").css("margin-right", "5%"); 
$("#tdlz_dialog_cancel").css("margin-left", "5%"); 
$("#tdlz_dialog_ok").unbind(); 
$("#tdlz_dialog_ok").click(function () { 
funcOK(); 
setTimeout(function () { 
$(dialogid).hide(500) 
}, 1000); }); 
$("#tdlz_dialog_cancel").click(function () { 
$(dialogid).hide(500); 
}); 
break; 
case "time"://倒计时对话框,显示time时间倒计时,结束后消失 
$("#tdlz_dialog_cancel").hide(); 
$("#dialog_lb_text").html(text + "" + time); 
var a = setInterval(function () { 
time = parseInt(time) - 1; 
if (time < 0) { 
clearInterval(a); 
$(dialogid).hide(500); 
} 
$("#dialog_lb_text").html(text + "" + time); 
}, 1000); 
$("#tdlz_dialog_ok").unbind(); 
$("#tdlz_dialog_ok").click(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}); 
break; 
} 
}

除了上面的使用函数,还需要对对话框进行初始化,为了插入文档中并且居中显示
function initDialog() { 
$("body").before(tdlz_dialog_content); 
//计算恰当的中间位置 
var top_percent = (window.innerHeight / 4) / window.innerHeight 
var left_percent = (window.innerWidth / 2 - $("#tdlz_dialog").width() / 2) / window.innerWidth; 
$("#tdlz_dialog").css("top", top_percent * 100 + "%"); 
$("#tdlz_dialog").css("left", left_percent * 100 + "%"); 
$("#tdlz_dialog").css("z-index", "100"); 
$("#tdlz_dialog").hide(); 
}

使用的时候如下(以confirm对话框为例):
initDialog(); 
showTdDialog("I'm a Dialog","confirm",function(){ console.log("Button OK Clicked!"); 
});

效果图如下:
自己使用js/jquery写的一个定制对话框控件
Javascript 相关文章推荐
使用JQuery进行跨域请求
Jan 25 Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
Mar 03 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
javascript中json基础知识详解
Jan 19 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
Vue组件通信的几种实现方法
Apr 25 Javascript
JavaScript计算正方形面积
Nov 26 Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 #Javascript
jQuery简单图表peity.js使用示例
May 02 #Javascript
jsPDF导出pdf示例
May 02 #Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 #Javascript
ExtJS4给Combobox设置列表中的默认值示例
May 02 #Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 #Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 #Javascript
You might like
destoon各类调用汇总
2014/06/20 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
小学综合实践活动总结
2014/07/07 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python