自己使用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动画效果代码3
Apr 03 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
Oct 21 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
Aug 30 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
Apr 16 Javascript
jquery对复选框(checkbox)的操作汇总
Jan 13 Javascript
Js动态设置rem来实现移动端字体的自适应代码
Oct 14 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
Dec 12 Javascript
js实现图片上传到服务器和回显
Jan 19 Javascript
es6函数之严格模式用法实例分析
Mar 17 Javascript
vue中使用vue-pdf的方法详解
Sep 05 Javascript
Vant picker 多级联动操作
Nov 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
php设计模式小结
2013/02/15 PHP
深入PHP数据加密详解
2013/06/18 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
对于Python中线程问题的简单讲解
2015/04/03 Python
Python中DJANGO简单测试实例
2015/05/11 Python
Python判断直线和矩形是否相交的方法
2015/07/14 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python字符串反转的四种方法详解
2019/12/02 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
三方合作协议书范本
2014/04/18 职场文书
社保委托书怎么写
2014/08/02 职场文书
中队活动总结
2014/08/27 职场文书
安全生产标语大全
2014/10/06 职场文书
英镑符号 £
2022/02/17 杂记
利用Python实时获取steam特惠游戏数据
2022/06/25 Python