jquery.Jwin.js 基于jquery的弹出层插件代码

  代码如下:

  

复制代码 代码如下:

  (function ($) {

  var imgdir = 'images/';//图片文件夹路径

  var autoHide=false;//悬浮div是否自动隐藏

  var hideType='hide';//隐藏的方式 可选参数 hide、slide、fade

  var hideDelay=0;//悬浮div隐藏过程使用的时间

  var hideTime=0;//悬浮div延迟隐藏时间

  var zIndex=100;//多个div时获取焦点的div处于顶层

  var showType='show';//悬浮div显示方式 可选参数 hide、slide、fade

  var showTime=0;//悬浮div显示过程使用的时间

  var showDelay=0;//悬浮div延迟显示的时间

  //以下两个变量用于保证div被拖动后隐藏 再次打开后出现的位置仍然为首次出现的位置

  var oldTop='';//保存div初次出现的top

  var oldLeft='';//保存div初次出现的left

  $.fn.extend({

  Jwin:function(option){

  var op=$.extend({

  id:'',//悬浮div的id (必须)

  title: '',//标题

  message:'',//显示信息

  elementId:'',//显示元素的id

  url: '',//显示的页面地址

  width: 400,//悬浮div的宽度

  height: 300,//悬浮div的高度

  //悬浮div显示参数

  showType:'show',//悬浮div显示方式 可选参数 hide、slide、fade

  showTime:0,//悬浮div显示过程使用的时间

  showDelay:0,//悬浮div延迟显示的时间

  //悬浮div隐藏参数

  autoHide:false,//悬浮div是否自动隐藏

  hideType:'hide',//隐藏的方式 可选参数 hide、slide、fade

  hideTime:0,//悬浮div隐藏过程使用的时间

  hideDelay:0,//悬浮div自动隐藏延迟时间

  },option);

  if(op.id==''){

  alert("缺少WinId");

  return;

  }

  autoHide=op.autoHide;

  hideType=op.hideType;

  hideDelay=op.hideDelay;

  hideTime=op.hideTime;

  showType=op.showType;

  showTime=op.showTime;

  showDelay=op.showDelay;

  zIndex=zIndex+1;

  var winEle=$("#"+op.id);

  if(winEle.length==0){

  this.width = parseInt(op.width);

  this.height = parseInt(op.height);

  var banner=this.JwinCreatBanner(op.id,this.width,op.title);

  oldTop = this.height >= document.documentElement.clientHeight ? 0 : (document.documentElement.clientHeight-this.height)/2;

  oldLeft = this.width >= document.body.clientWidth ? 0 : (document.body.clientWidth-this.width)/2;

  win=$('<div id="' + op.id + '"></div>');

  win.css({'position':'absolute','top':oldTop,'left':oldLeft,'width':(this.width+2),'zIndex':zIndex,'display':'none'});

  win.html(banner);

  win.find("#close").bind('click',function(){$(this).JwinClose(op.id);});

  win.find("#bannerMiddle").bind('mousedown',function(){$(this).JwinMove(op.id);});

  var container=$('<div id="' + op.id + '_con"></div>');

  container.css({'float':'left','width':+this.width,'height':this.height,'word-break':'break-all','overflow-x':'hidden','overflow-y':'auto','border':'1px solid #1972e1','background-color':'#FFF','clear':'both'});

  if(op.message.length>0){

  container.append(op.message);

  }

  else if(op.url.length>0){

  var iframe=$('<iframe frameborder="0"></iframe>');

  iframe.css({'width':'100%','height':'100%','overflow':'visible','border':'0'});

  iframe.attr('src',op.url);

  container.append(iframe);

  }

  else if(op.elementId.length>0){

  var element=$("#"+op.elementId);

  if(element){

  container.append(element);

  element.show();

  }

  }

  win.append(container);

  $(document.body).append(win);

  this.JwinShow(win);

  //是否设置自动关闭

  if(autoHide){

  this.JwinHide(op.id);

  }

  }

  else{

  winEle.css({'zIndex':(winEle.css('zIndex')+2),'top':oldTop,'left':oldLeft});

  this.JwinShow(winEle);

  }

  },

  //创建标题

  JwinCreatBanner:function(winId,width,title){

  var bannerImddleWidth = width-47;//拖动部分div宽度为总宽度减去两边圆角宽度、关闭按钮宽度

  var banner = '<div style="folat:left;width:'+(width+2)+';clear:both;font-size:14px;font:Arial,Helvetica,sans-serif;color:#FFF;">';

  banner += '<div style="width:14px;height:30px;line-height:30px;float:left;background:url('+imgdir+'windows_banner_left.gif) no-repeat;"></div>';

  banner += '<div id="bannerMiddle" style="width:'+bannerImddleWidth+'px;height:30px;float:left;line-height:30px;cursor:move;float:left;text-align:left;background:url('+imgdir+'windows_banner.gif) repeat-x;" >'+title+'</div>';

  banner += '<div style="width:21px;height:30px;line-height:30px;float:left;background:url('+imgdir+'windows_banner.gif) repeat-x;"><img style="border:0;margin-top:4px;" id="close" src="'+imgdir+'win_close_normal.gif" onmouseover="this.src=\''+imgdir+'win_close_hover.gif\'" onmouseout="this.src=\''+imgdir+'win_close_normal.gif\'" /></div>';

  banner += '<div style="width:14px;height:30px;line-height:30px;float:left;background:url('+imgdir+'windows_banner_right.gif) no-repeat;"></div>';

  banner += '</div>';

  return banner;

  },

  //拖动

  JwinMove:function(winId){

  var floatWin=document.getElementById(winId);

  zIndex=zIndex+1;

  floatWin.style.zIndex=zIndex;

  o=window.event.srcElement||window.event.target;

  var d=document;

  var a=window.event;

  var x=a.layerX?a.layerX:a.offsetX;

  var y=a.layerY?a.layerY:a.offsetY;

  if(o.setCapture){

  o.setCapture();

  }

  else if(window.captureEvents){

  window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

  }

  d.onmousemove=function(a){

  if(!a)a=window.event;

  if(!a.pageX)a.pageX=a.clientX;

  if(!a.pageY)a.pageY=a.clientY;

  var tx=a.pageX-x,ty=a.pageY-y;

  var maxx=document.documentElement.clientWidth-floatWin.clientWidth;

  var maxy=document.documentElement.clientHeight-floatWin.clientHeight;

  tx=(tx<0)?0:tx;

  ty=(ty<0)?0:ty;

  tx=(tx>maxx)?maxx:tx;

  ty=(ty>maxy)?maxy:ty;

  floatWin.style.left=tx;

  floatWin.style.top=ty;

  };

  d.onmouseup=function(){

  if(o.releaseCapture){

  o.releaseCapture();

  }

  else if(window.captureEvents){

  window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

  }

  d.onmousemove=null;

  d.onmouseup=null;

  };

  },

  //显示

  JwinShow:function(win){

  var t = showDelay;

  switch(showType){

  case 'slide':

  setTimeout(function(){win.slideDown(showTime);}, t);

  break;

  case 'fade':

  setTimeout(function(){win.fadeIn(showTime);},t);

  break;

  default:

  setTimeout(function(){win.show();},t);

  break;

  }

  },

  //隐藏

  JwinHide:function(winId,atonce){

  var win = $("#"+winId);

  var t = atonce ? 0 : hideDelay;

  switch(hideType){

  case 'slide':

  setTimeout(function(){win.slideUp(hideTime);}, t);

  break;

  case 'fade':

  setTimeout(function(){win.fadeOut(hideTime);},t);

  break;

  default:

  setTimeout(function(){win.hide();},t);

  break;

  }

  },

  //关闭

  JwinClose:function(winId){

  this.JwinHide(winId,true);

  }

  });

  })(jQuery)