jquery封装对话框插件

来源:互联网 发布:最新的斯诺克破百数据 编辑:程序博客网 时间:2024/04/28 22:04

jquery.ui.dialog是一个友好的对话框插件,为了方便使用我们将使用jquery.ui.dialog封装一个易用的对话框插件,代码:

 

jQuery.extend(jQuery, { // jQuery UI alert弹出提示 jqalert: function(text, title, fn) { var html = '<div class="dialog" id="dialog-message">' + ' <p>' + ' <span class="ui-icon ui-icon-circle-check" style="float: left; margin: 0 7px 0 0;"></span>' + text + ' </p>' + '</div>'; return $(html).dialog({ //autoOpen: false, resizable: false, modal: true, show: { effect: 'fade', duration: 300 }, title: title || "提示信息", buttons: { "确定": function() { var dlg = $(this).dialog("close"); fn && fn.call(dlg); } } }); }, // jQuery UI alert弹出提示,一定间隔之后自动关闭 jqtimeralert: function(text, title, fn, timerMax) { var dd = $( '<div class="dialog" id="dialog-message">' + ' <p>' + ' <span class="ui-icon ui-icon-circle-check" style="float: left; margin: 0 7px 0 0;"></span>' + text + ' </p>' + '</div>'); dd[0].timerMax = timerMax || 3; return dd.dialog({ //autoOpen: false, resizable: false, modal: true, show: { effect: 'fade', duration: 300 }, open: function(e, ui) { var me = this, dlg = $(this), btn = dlg.parent().find(".ui-button-text").text("确定(" + me.timerMax + ")"); --me.timerMax; me.timer = window.setInterval(function() { btn.text("确定(" + me.timerMax + ")"); if (me.timerMax-- <= 0) { dlg.dialog("close"); fn && fn.call(dlg); window.clearInterval(me.timer); // 时间到了清除计时器 } }, 1000); }, title: title || "提示信息", buttons: { "确定": function() { var dlg = $(this).dialog("close"); fn && fn.call(dlg); window.clearInterval(this.timer); // 清除计时器 } }, close: function() { window.clearInterval(this.timer); // 清除计时器 } }); }, // jQuery UI confirm弹出确认提示 jqconfirm: function(text, title, fn1, fn2) { var html = '<div class="dialog" id="dialog-confirm">' + ' <p>' + ' <span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>' + text + ' </p>' + '</div>'; return $(html).dialog({ //autoOpen: false, resizable: false, modal: true, show: { effect: 'fade', duration: 300 }, title: title || "提示信息", buttons: { "确定": function() { var dlg = $(this).dialog("close"); fn1 && fn1.call(dlg, true); }, "取消": function() { var dlg = $(this).dialog("close"); fn2 && fn2(dlg, false); } } }); }, // jQuery UI 弹出iframe窗口 jqopen: function(url, options) { var html = '<div class="dialog" id="dialog-window" title="提示信息">' + ' <iframe src="' + url + '" frameBorder="0" style="border: 0; " scrolling="auto" width="100%" height="100%"></iframe>' + '</div>'; return $(html).dialog($.extend({ modal: true, closeOnEscape: false, draggable: false, resizable: false, close: function(event, ui) { $(this).dialog("destroy"); // 关闭时销毁 } }, options)); }, // jQuery UI confirm提示 confirm: function(evt, text, title) { evt = $.event.fix(evt); var me = evt.target; if (me.confirmResult) { me.confirmResult = false; return true; } jQuery.jqconfirm(text, title, function(e) { me.confirmResult = true; if (e) { if (me.href && $.trim(me.href).indexOf("javascript:") == 0) { $.globalEval(me.href); me.confirmResult = false; return; } var t = me.type && me.type.toLowerCase(); if (t && me.name && (t == "image" || t == "submit" || t == "button")) { __doPostBack(me.name, ""); me.confirmResult = false; return; } if (me.click) me.click(evt); } return false; }); return false; } });

以上代码还存在一个问题,就是每次弹出框关闭之后都没有销毁。

解决办法:

在close事件里面destroy ,把alert/confirm提供里的dialog实例设置成静态的,在外部调用使用单个dialog实例

原创粉丝点击