define(function (require, exports) { var mask = $('
'); var maskCallback = []; var unmaskCallback = []; document.body.appendChild(mask[0]); //当动画完成后,如果没有显示的必要,那么就移除它。 //这里没有考虑没有如果没有这个事件触发的情况 mask.on("transitionend", function () { var cb = null; if (!mask.hasClass("final")) { mask.hide(); while (cb = unmaskCallback.shift()) cb.call(mask); } else { while (cb = maskCallback.shift()) cb.call(mask); } }); //将当前对象置于居中的位置,并允许以指定方式做便宜 var centerEle = function (e, offsety) { var width = e.width(); var height = e.height(); offsety = offsety || 20; e.css("margin-left", "-" + (width / 2) + "px"); e.css("margin-top", "-" + (height / 2 + offsety) + "px"); if (!e.hasClass("float-dialog")) e.addClass("float-dialog"); }; var maskScreen = exports.mask = function (callback) { if (callback) maskCallback.push(callback); mask.height(document.body.scrollHeight + "px"); mask.show(); setTimeout(function () { mask.addClass("final"); }, 10); }; var unmaskScreen = exports.unmask = function (callback) { if (callback) maskCallback.push(callback); mask.removeClass("final"); }; exports.showFloatDialog = function (ele, callback) { centerEle(ele); maskScreen(function () { ele.show(); ele.animate({ opacity: 'show', "margin-top": "+=20px" }, 'fast', 'linear', callback); }); }; exports.hideFloatDialog = function (ele, callback) { ele.animate({ opacity: 'hide', "margin-top": "-=20px" }, 'fast', 'linear', function () { unmaskScreen(callback); }); }; //监听文档级别事件,显示悬浮窗 $(document).on("refreshDialog.widget", function () { var e = $(this); var height = e.height(); e.animate({ top: "-" + (height / 2) + "px" }, 'fast', 'linear'); }); $(document).on("click.widget", ".float-dialog .cancel-button", function () { exports.hideFloatDialog($(this).closest(".float-dialog")); }); });