使用jQuery实现更改默认alert框体

 更新时间:2015年04月13日 09:58:30   投稿:hebedich  
本文给大家介绍的是如何使用jquery 改写Alert弹出框样式,十分的实用,这里推荐给大家,有需要的小伙伴可以参考下。

更改框体主要用到的是更改系统的内置控件winpop下面是winpop具体代码

(function(window, jQuery, undefined) {
 
   var HTMLS = {
     ovl: '<div class="J_WinpopMask winpop-mask" id="J_WinpopMask"></div>' + '<div class="J_WinpopBox winpop-box" id="J_WinpopBox">' + '<div class="J_WinpopMain winpop-main"></div>' + '<div class="J_WinpopBtns winpop-btns"></div>' + '</div>',
     alert: '<input type="button" class="J_AltBtn pop-btn alert-button" value="确定">',
     confirm: '<input type="button" class="J_CfmFalse pop-btn confirm-false" value="取消">' + '<input type="button" class="J_CfmTrue pop-btn confirm-true" value="确定">'
   }
 
   function Winpop() {
     var config = {};
     this.get = function(n) {
       return config[n];
     }
 
     this.set = function(n, v) {
       config[n] = v;
     }
     this.init();
   }
 
   Winpop.prototype = {
     init: function() {
       this.createDom();
       this.bindEvent();
     },
     createDom: function() {
       var body = jQuery("body"),
         ovl = jQuery("#J_WinpopBox");
 
       if (ovl.length === 0) {
         body.append(HTMLS.ovl);
       }
 
       this.set("ovl", jQuery("#J_WinpopBox"));
       this.set("mask", jQuery("#J_WinpopMask"));
     },
     bindEvent: function() {
       var _this = this,
         ovl = _this.get("ovl"),
         mask = _this.get("mask");
       ovl.on("click", ".J_AltBtn", function(e) {
         _this.hide();
       });
       ovl.on("click", ".J_CfmTrue", function(e) {
         var cb = _this.get("confirmBack");
         _this.hide();
         cb && cb(true);
       });
       ovl.on("click", ".J_CfmFalse", function(e) {
         var cb = _this.get("confirmBack");
         _this.hide();
         cb && cb(false);
       });
       mask.on("click", function(e) {
         _this.hide();
       });
       jQuery(document).on("keyup", function(e) {
         var kc = e.keyCode,
           cb = _this.get("confirmBack");;
         if (kc === 27) {
           _this.hide();
         } else if (kc === 13) {
           _this.hide();
           if (_this.get("type") === "confirm") {
             cb && cb(true);
           }
         }
       });
     },
     alert: function(str, btnstr) {
       var str = typeof str === 'string' ? str : str.toString(),
         ovl = this.get("ovl");
       this.set("type", "alert");
       ovl.find(".J_WinpopMain").html(str);
       if (typeof btnstr == "undefined") {
         ovl.find(".J_WinpopBtns").html(HTMLS.alert);
       } else {
         ovl.find(".J_WinpopBtns").html(btnstr);
       }
       this.show();
     },
     confirm: function(str, callback) {
       var str = typeof str === 'string' ? str : str.toString(),
         ovl = this.get("ovl");
       this.set("type", "confirm");
       ovl.find(".J_WinpopMain").html(str);
       ovl.find(".J_WinpopBtns").html(HTMLS.confirm);
       this.set("confirmBack", (callback || function() {}));
       this.show();
     },
     show: function() {
       this.get("ovl").show();
       this.get("mask").show();
     },
     hide: function() {
       var ovl = this.get("ovl");
       ovl.find(".J_WinpopMain").html("");
       ovl.find(".J_WinpopBtns").html("");
       ovl.hide();
       this.get("mask").hide();
     },
     destory: function() {
       this.get("ovl").remove();
       this.get("mask").remove();
       delete window.alert;
       delete window.confirm;
     }
   };
 
   var obj = new Winpop();
   window.alert = function(str) {
     obj.alert.call(obj, str);
   };
   window.confirm = function(str, cb) {
     obj.confirm.call(obj, str, cb);
   };
 })(window, jQuery);

然后实例化对象

 var obj = new Winpop(); // 创建一个Winpop的实例对象
 // 覆盖alert控件
 window.alert = function(str) {
   obj.alert.call(obj, str);
 };
 // 覆盖confirm控件
 window.confirm = function(str, cb) {
   obj.confirm.call(obj, str, cb);
 };

以下JS不可少

<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="winpop.js"></script>

以上所述就是本文的全部内容了,希望对大家能够有所帮助。

相关文章

  • jquery获取img的src值实例介绍

    jquery获取img的src值实例介绍

    在本篇文章里小编给大家分享了关于jquery获取img的src值实例介绍和相关内容,有需要的朋友们学习下。
    2019-01-01
  • 用jquery ajax获取网站Alexa排名的代码

    用jquery ajax获取网站Alexa排名的代码

    其实就是利用了jquery的ajax功能,获取远程的xml文件,读取指定内容的代码,对于学习jquery的朋友是个不错的参考。
    2009-12-12
  • Jq通过td获取同行其它列td的方法

    Jq通过td获取同行其它列td的方法

    下面小编就为大家带来一篇Jq通过td获取同行其它列td的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Jquery 获取相同NAME 或者id删除行操作

    Jquery 获取相同NAME 或者id删除行操作

    这篇文章主要介绍了Jquery 获取相同NAME 或者id删除行操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • jQuery的one()方法用法实例

    jQuery的one()方法用法实例

    这篇文章主要介绍了jQuery的one()方法用法,实例分析了one()方法的功能、定义及为匹配元素的特定事件绑定一个一次性的事件处理方法使用技巧,需要的朋友可以参考下
    2015-01-01
  • 详解easyui 切换主题皮肤

    详解easyui 切换主题皮肤

    这篇文章主要介绍了easyui 切换主题皮肤方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • jquery form表单序列化为对象的示例代码

    jquery form表单序列化为对象的示例代码

    这篇文章主要介绍了jquery form表单序列化为对象具体实现,需要的朋友可以参考下
    2014-03-03
  • 基于jquery的获取浏览器窗口大小的代码

    基于jquery的获取浏览器窗口大小的代码

    今天正好用到这个,就网上搜了搜,贴出来了。需要的朋友可以参考下。
    2011-03-03
  • 浅谈jquery中的each方法$.each、this.each、$.fn.each

    浅谈jquery中的each方法$.each、this.each、$.fn.each

    下面小编就为大家带来一篇浅谈jquery中的each方法$.each、this.each、$.fn.each。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 关于两个jQuery(js)特效冲突的bug的解决办法

    关于两个jQuery(js)特效冲突的bug的解决办法

    下面小编就为大家带来一篇关于两个jQuery(js)特效冲突的bug的解决办法。小编觉得挺不错的,现在就分享 给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09

最新评论