自己使用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 相关文章推荐
javascript对话框使用方法(警告框 javascript确认框 提示框)
Jan 07 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
Dec 07 Javascript
利用JS实现简单的日期选择插件
Jan 23 Javascript
jquery表单验证实例仿Toast提示效果
Mar 03 Javascript
如何以Angular的姿势打开Font-Awesome详解
Apr 22 Javascript
vue中eslintrc.js配置最详细介绍
Dec 21 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
详解vue v-model
Aug 31 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
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
为什么使用接口?
2014/08/13 面试题
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
教师实习自我鉴定
2013/12/13 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
妇女干部培训方案
2014/05/12 职场文书
社区活动策划方案
2014/08/21 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
php png失真的原因及解决办法
2021/10/24 PHP
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers
SQLServer常见数学函数梳理总结
2022/08/05 MySQL