jQuery弹出层插件简化版

  1. String.prototype.replaceAll  = function(s1,s2){
  2. return this.replace(new RegExp(s1,"gm"),s2);    
  3. };
  4. (function($){
  5. /*
  6.  * $-layer 0.1 - New Wave Javascript
  7.  *
  8.  * Copyright (c) 2008 King Wong
  9.  * $Date: 2008-10-09  $
  10.  */
  11. var ___id___ = "";
  12. var ___settings___ = {};
  13. var isMouseDown    = false;
  14. var currentElement = null;
  15. var dropCallbacks = {};
  16. var dragCallbacks = {};
  17. var bubblings = {};
  18. var lastMouseX;
  19. var lastMouseY;
  20. var lastElemTop;
  21. var lastElemLeft;
  22. var dragStatus = {};    
  23. var holdingHandler = false;
  24. $.getMousePosition = function(e){
  25.     var posx = 0;
  26.     var posy = 0;
  27.     if (!e) var e = window.event;
  28.     if (e.pageX || e.pageY) {
  29.         posx = e.pageX;
  30.         posy = e.pageY;
  31.     }
  32.     else if (e.clientX || e.clientY) {
  33.         posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
  34.         posy = e.clientY + document.body.scrollTop  + document.documentElement.scrollTop;
  35.     }
  36.     return { 'x': posx, 'y': posy };
  37. };
  38. $.updatePosition = function(e) {
  39.     var pos = $.getMousePosition(e);
  40.     var spanX = (pos.x - lastMouseX);
  41.     var spanY = (pos.y - lastMouseY);
  42.     var _top = (lastElemTop + spanY) > 0 ? (lastElemTop + spanY) : 0;
  43.     var _left = (lastElemLeft + spanX) > 0 ? (lastElemLeft + spanX) : 0;
  44.     $("#"+___id___).css("top",  _top);
  45.     $("#"+___id___).css("left", _left);
  46. };
  47. $.fn.ondrag = function(callback){
  48.     return this.each(function(){
  49.         dragCallbacks[this.id] = callback;
  50.     });
  51. };
  52. $.fn.ondrop = function(callback){
  53.     return this.each(function(){
  54.         dropCallbacks[this.id] = callback;
  55.     });
  56. };
  57. $.fn.dragOff = function(){
  58.     return this.each(function(){
  59.         dragStatus[this.id] = 'off';
  60.     });
  61. };
  62. $.fn.dragOn = function(){
  63.     return this.each(function(){
  64.         dragStatus[this.id] = 'on';
  65.     });
  66. };
  67. $.extend({
  68.     layerSettings:{
  69.         id:"layerdiv",
  70.         width:220,
  71.         height:220,
  72.         templete:'<div style="height:20px; width:@width@px; background-color:#777777;"><span id="@moveid@" style="position:relative; left:0px; top:0px; height:20px; width:100px;"><span id="@titleid@">@title@</span></span><span class="layerclose" style="position:relative; top:0px; float:right; right:20px; color:red;">close</span></div><div style="border:solid #ff0000 1px; width:@width@px; height:@height@px;"><div style="width:100%; height:100%; background-color:#ffffff;" id="@contentid@"></div></div>',
  73.         content:'',
  74.         title:'',
  75.         isbg:true,
  76.         opacity:0.3
  77.     },
  78.     layerSetup: function( settings ) {
  79.         $.extend( $.layerSettings, settings );
  80.         ___settings___[settings.id] = settings;
  81.         ___id___ = settings.id;
  82.     },
  83.     layershow:function(){       
  84.         var __bw = $("body").width();
  85.         var __bh = $("body").height() > $(window).height() ? $("body").height() : $(window).height();
  86.         var _width = $.layerSettings.width;
  87.         var _height = $.layerSettings.height;
  88.         
  89.         if(document.getElementById(___id___)) return;
  90.         var _moveid = ___id___ + "_move";
  91.         var _titleid = ___id___ + "_title";
  92.         var _contentid = ___id___ + "_content";
  93.         var _cssurl = $.layerSettings.cssurl;
  94.         var opacity = $.layerSettings.opacity;
  95.         __index = $.layermaxindex();
  96.         var __left = (__bw - _width) > 0 ? (__bw - _width)/2 : 0;
  97.         var __top = 100;
  98.         var __bgDiv = '<div id="'+___id___+'_background" style="background:#000000; filter:alpha(opacity='+(opacity*100)+'); opacity: '+opacity+'; width:'+__bw+'px; height:'+__bh+'px; z-index:'+(__index++)+'; position:absolute; left:0px; top:0px;"></div>';
  99.         if($.layerSettings.isbg)
  100.         {
  101.             $("body").append(__bgDiv);
  102.         }
  103.         $("body").append('<div id="'+___id___+'" style="z-index:'+__index+';position:absolute; left:'+__left+'px; top:'+__top+'px;"></div>');
  104.         var _templete = $.layerSettings.templete;
  105.         var __templete = _templete.replaceAll("@width@",_width).replaceAll("@height@",_height).replaceAll("@titleid@",_titleid).replaceAll("@contentid@",_contentid).replaceAll("@title@",jQuery.layerSettings.title).replaceAll("@moveid@",_moveid);
  106.         $("#"+___id___).append(__templete);
  107.         $("#"+_contentid).append($.layerSettings.content);
  108.         $("#"+_titleid).append($.layerSettings.title);
  109.         var idd = ___id___;
  110.         $(".layerclose").bind("click",function()
  111.         {
  112.             $.layerclose(idd);
  113.         });
  114.         $("#"+___id___).bind("click",function()
  115.          {
  116.              var id = this.id;
  117.              $.layerSetup(___settings___[id]);
  118.             $(this).css("z-index",$.layermaxindex()); 
  119.          });
  120.         $(document).bind("click",function(e)
  121.          {
  122.             var pos = $.getMousePosition(e);
  123.             
  124.          });
  125.         $(document).mousemove(function(e){                                          
  126.             if(isMouseDown && dragStatus[currentElement.id] != 'false'){
  127.                 $.updatePosition(e);
  128.                 if(dragCallbacks[currentElement.id] != undefined){
  129.                     dragCallbacks[currentElement.id](e, currentElement);
  130.                 }
  131.                 return false;
  132.             }
  133.         });
  134.         $(document).mouseup(function(e){
  135.             if(isMouseDown && dragStatus[currentElement.id] != 'false'){
  136.                 isMouseDown = false;
  137.                 if(dropCallbacks[currentElement.id] != undefined){
  138.                     dropCallbacks[currentElement.id](e, currentElement);
  139.                 }
  140.                 return false;
  141.             }
  142.         });
  143.         (function(){
  144.             bubblings[___id___] = true;
  145.             dragStatus[___id___] = "on";
  146.             
  147.             //setHandler
  148.             bubblings[this.id] = true;
  149.             
  150.             dragStatus[_moveid] = "handler";
  151.             $("#"+_moveid).css("cursor""move");   
  152.             $("#"+_moveid).mousedown(function(e){
  153.                 var id = this.id.replace("_move","");
  154.                 ___id___ = id;
  155.                 $("#"+id).css("z-index",$.layermaxindex());
  156.                 $.layerSetup(___settings___[id]);
  157.                 if((dragStatus[___id___] == "off") || (dragStatus[___id___] == "handler" && !holdingHandler))
  158.                     return bubblings["#"+___id___];
  159.                 
  160.                 isMouseDown    = true;
  161.                 currentElement = $("#"+___id___);
  162.                 var pos    = $.getMousePosition(e);
  163.                 lastMouseX = pos.x;
  164.                 lastMouseY = pos.y;
  165.                 lastElemTop  = document.getElementById(___id___).offsetTop;
  166.                 lastElemLeft = document.getElementById(___id___).offsetLeft;
  167.                 $.updatePosition(e);
  168.                 holdingHandler = true;
  169.             });
  170.             
  171.             $("#"+_moveid).mouseup(function(e){
  172.                 holdingHandler = false;
  173.             });
  174.             //end setHandler
  175.         })();
  176.     },
  177.     layerclose:function(__id)
  178.     {
  179.         $("#"+__id+"_background").remove();
  180.         $("#"+__id).remove();
  181.     },
  182.     layermaxindex:function()
  183.     {
  184.         var ___index = 0;
  185.         $.each($("*"),function(i,n){
  186.              var __tem = $(n).css("z-index");
  187.              if(__tem>0)
  188.              {
  189.                 if(__tem > ___index)
  190.                 {
  191.                     ___index = __tem + 1;   
  192.                 }
  193.              }
  194.          });
  195.         return ___index;
  196.     }
  197. });
  198. })(jQuery);

 

使用方法:

(1)显示层:

  1. function show()
  2. {
  3. $.layerSetup({
  4.                  id:"abc",//弹出层的ID
  5.                  title:"test",//标题
  6.                  content:'test',//内容
  7.                  isbg:false,//是否显示背景遮照层
  8.                  opacity:0.3,//背景遮照层的透明度,值越大透明度越低,0为完全透明,1为不透明
  9.                  templete:'<div class="showwint_mini_title"><span class="showwint_mini_close_btn"><a href="javascript:void(null);" class="layerclose"></a></span><span class="showwint_mini_title_content" id="@moveid@"><span id="@titleid@"></span></span></div><div class="showwint_mini_content"><div class="showwint_mini_content_content" id="@contentid@"></div></div>'//模板
  10.                  });
  11. $.layershow();
  12. }

(2)关闭层:

 

  1. $.layerclose("弹出层的ID");

 

注意:那个如果你的模板有CSS文件的话,就要直接引入到本页面就行了,这个简化版不能在别的框架弹出层的,所以也就没有了那个cssurl属性了,也没有target 属性了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值