自己使用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自动设置IFrame高度的小例子
Jun 08 Javascript
jquery实现div拖拽宽度示例代码
Jul 31 Javascript
Jquery.addClass始终无效原因分析
Sep 08 Javascript
jquery iframe操作详细解析
Nov 20 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
JavaScript数组和循环详解
Apr 27 Javascript
浅谈jQuery构造函数分析
May 11 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
Jan 08 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
vue render函数动态加载img的src路径操作
Oct 26 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中的三元运算符使用说明
2011/07/03 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
js活用事件触发对象动作
2008/08/10 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
js实现搜索栏效果
2018/11/16 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
毕业生自我鉴定
2013/12/04 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
个人查摆剖析材料
2014/02/04 职场文书
淘宝活动策划方案
2014/02/06 职场文书
承诺书范文
2014/06/03 职场文书
销售人员求职信
2014/07/22 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
社区党建工作总结2015
2015/05/13 职场文书
感恩老师主题班会
2015/08/12 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js