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)