自己使用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 相关文章推荐
js常用函数 不错
Sep 08 Javascript
javascript中的document.open()方法使用介绍
Oct 09 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
Feb 28 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
原生JS实现小小的音乐播放器
Oct 16 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 Javascript
JS实现滑动插件
Jan 15 Javascript
JavaScript函数重载操作实例浅析
May 02 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
封装一个PDO数据库操作类代码
2009/09/09 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js日期联动示例
2014/05/02 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
vue组件name的作用小结
2018/05/23 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
viewer.js实现图片预览功能
2020/06/24 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python中append函数用法讲解
2020/12/11 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
家具促销活动方案
2014/02/16 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
十佳家长事迹材料
2014/08/26 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
付款证明模板
2015/06/19 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript