이전에 프로젝트를 진행했는데 내부 팝업 레이어가 꽤 좋다고 느꼈는데, 코드 구조에 문제가 있어서 이번에 사용해서 리팩토링해서 jQuery 플러그인 형태로 변경했는데, reLoad 기능을 추가했는데 코드는 다음과 같습니다.
(function($){
$ .module={
_showCoverLayer:function(){//커버 레이어 표시
this.coverLayer=$("#TB_overlay");
var height=$(document).height() "px" ;
var width=$(document).width() "px"
if(this.coverLayer.length>0){
this.coverLayer.css({"visibility":"visible" ,"height":height,"width":width})
}else{
this.coverLayer=$("
");
$("body").append(this.coverLayer);
}
},
_hideCoverLayer:function(){/ /커버 레이어 숨기기
this.coverLayer.css("visibility","hidden")
},
_showAjaxLoad:function( imgUrl){
this.ajaxLayer=$("#TB_load" )
if(this.ajaxLayer.length>0){
this.ajaxLayer.css({"visibility":"visible"} );
$("#TB_loadContent").css({ "display":"block"})
}else{
this.ajaxLayer=$("
");
$("body").append( this.ajaxLayer);
}
},
_hideAjaxLoad:function(){
this.ajaxLayer.css("visibility","hidden")
$("#TB_loadContent" ).css({"display":"none"});
},
showWin:function(opt){//url,title,width,height,fixTop,fixLeft,imgUrl,top
this._showCoverLayer();
this.imgUrl=opt.imgUrl || "/image/ajax-loader.gif";
this._showAjaxLoad(this.imgUrl); "#TB_window");
var that=this;
if(this.win.length==0){
this.win=$("
< ;/div>");
$("body") .append(this.win);
this.win.append("
$("#TB_close").click(function(){
that.hideWin();
});
this._init(opt)
$("#TB_ajaxContent").load(opt.url, function () {
that._hideAjaxLoad();
that.win.slideDown("normal" )
})
hideWin:function(){
var that=this;
this.win.fadeOut("fast",function(){
that._hideCoverLayer();
})
},
_init:function(opt) {
$("#TB_title").html(opt.title);
var top =opt.top || ( $(window).height() - opt.height ) /2 (opt.fixTop || 0);// $(window).scrollTop() ;
var left=( $ (window).width() - opt.width ) / 2 (opt.fixLeft || 0);// $ (window).scrollLeft();
this.win.css({"height":opt.height "px",
"width":opt.width "px",
"top": top "px",
"left":left "px"
})
},
reLoad:function(opt){//새 페이지 로드
var that=this ;
this.win.fadeOut("fast",function(){
that._showAjaxLoad(that.imgUrl);
that._init(opt);
$("#TB_ajaxContent") .load(opt.url, function() {
that._hideAjaxLoad();
that.win.fadeIn("normal");
})
});
}
})(jQuery);
CSS 코드는 다음과 같습니다.
코드 복사