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
10 * $Date: 2008-10-09 $
11 */
12 var ___id___ = "" ;
13 var ___settings___ = {};
14 var isMouseDown = false ;
15
16 var currentElement = null ;
17
18 var dropCallbacks = {};
19 var dragCallbacks = {};
20
21 var bubblings = {};
22
23 var lastMouseX;
24 var lastMouseY;
25 var lastElemTop;
26 var lastElemLeft;
27
28 var dragStatus = {};
29
30 var holdingHandler = false ;
31
32 $.getMousePosition = function (e){
33 var posx = 0 ;
34 var posy = 0 ;
35
36 if ( ! e) var e = window.event;
37
38 if (e.pageX || e.pageY) {
39 posx = e.pageX;
40 posy = e.pageY;
41 }
42 else if (e.clientX || e.clientY) {
43 posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
44 posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
45 }
46 return { ' x ' : posx, ' y ' : posy };
47 };
48 $.updatePosition = function (e) {
49 var pos = $.getMousePosition(e);
50
51 var spanX = (pos.x - lastMouseX);
52 var spanY = (pos.y - lastMouseY);
53 var _top = (lastElemTop + spanY) > 0 ? (lastElemTop + spanY) : 0 ;
54 var _left = (lastElemLeft + spanX) > 0 ? (lastElemLeft + spanX) : 0 ;
55 $( " # " + ___id___).css( " top " , _top);
56 $( " # " + ___id___).css( " left " , _left);
57 };
58
59 $.fn.ondrag = function (callback){
60 return this .each( function (){
61 dragCallbacks[ this .id] = callback;
62 });
63 };
64 $.fn.ondrop = function (callback){
65 return this .each( function (){
66 dropCallbacks[ this .id] = callback;
67 });
68 };
69
70 $.fn.dragOff = function (){
71 return this .each( function (){
72 dragStatus[ this .id] = ' off ' ;
73 });
74 };
75
76 $.fn.dragOn = function (){
77 return this .each( function (){
78 dragStatus[ this .id] = ' on ' ;
79 });
80 };
81 $.extend({
82 layerSettings:{
83 id: " layerdiv " ,
84 width: 220 ,
85 height: 220 ,
86 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> ' ,
87 content: '' ,
88 title: '' ,
89 isbg: true ,
90 opacity: 0.3
91 },
92 layerSetup: function ( settings ) {
93 $.extend( $.layerSettings, settings );
94 ___settings___[settings.id] = settings;
95 ___id___ = settings.id;
96 },
97 layershow: function (){
98 var __bw = $( " body " ).width();
99 var __bh = $( " body " ).height() > $(window).height() ? $( " body " ).height() : $(window).height();
100 var _width = $.layerSettings.width;
101 var _height = $.layerSettings.height;
102
103 if (document.getElementById(___id___)) return ;
104 var _moveid = ___id___ + " _move " ;
105 var _titleid = ___id___ + " _title " ;
106 var _contentid = ___id___ + " _content " ;
107 var _cssurl = $.layerSettings.cssurl;
108 var opacity = $.layerSettings.opacity;
109 __index = $.layermaxindex();
110 var __left = (__bw - _width) > 0 ? (__bw - _width) / 2 : 0;
111 var __top = 100 ;
112 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> ' ;
113 if ($.layerSettings.isbg)
114 {
115 $( " body " ).append(__bgDiv);
116 }
117 $( " body " ).append( ' <div id=" ' + ___id___ + ' " style="z-index: ' + __index + ' ;position:absolute; left: ' + __left + ' px; top: ' + __top + ' px;"></div> ' );
118 var _templete = $.layerSettings.templete;
119 var __templete = _templete.replaceAll( " @width@ " ,_width).replaceAll( " @height@ " ,_height).replaceAll( " @titleid@ " ,_titleid).replaceAll( " @contentid@ " ,_contentid).replaceAll( " @title@ " ,jQuery.layerSettings.title).replaceAll( " @moveid@ " ,_moveid);
120 $( " # " + ___id___).append(__templete);
121 $( " # " + _contentid).append($.layerSettings.content);
122 $( " # " + _titleid).append($.layerSettings.title);
123 var idd = ___id___;
124 $( " .layerclose " ).bind( " click " , function ()
125 {
126 $.layerclose(idd);
127 });
128 $( " # " + ___id___).bind( " click " , function ()
129 {
130 var id = this .id;
131 $.layerSetup(___settings___[id]);
132 $( this ).css( " z-index " ,$.layermaxindex());
133 });
134 $(document).bind( " click " , function (e)
135 {
136 var pos = $.getMousePosition(e);
137
138 });
139 $(document).mousemove( function (e){
140 if (isMouseDown && dragStatus[currentElement.id] != ' false ' ){
141 $.updatePosition(e);
142 if (dragCallbacks[currentElement.id] != undefined){
143 dragCallbacks[currentElement.id](e, currentElement);
144 }
145 return false ;
146 }
147 });
148 $(document).mouseup( function (e){
149 if (isMouseDown && dragStatus[currentElement.id] != ' false ' ){
150 isMouseDown = false ;
151 if (dropCallbacks[currentElement.id] != undefined){
152 dropCallbacks[currentElement.id](e, currentElement);
153 }
154 return false ;
155 }
156 });
157 ( function (){
158 bubblings[___id___] = true ;
159
160 dragStatus[___id___] = " on " ;
161
162 // setHandler
163 bubblings[ this .id] = true ;
164
165 dragStatus[_moveid] = " handler " ;
166
167 $( " # " + _moveid).css( " cursor " , " move " );
168
169 $( " # " + _moveid).mousedown( function (e){
170 var id = this .id.replace( " _move " , "" );
171 ___id___ = id;
172 $( " # " + id).css( " z-index " ,$.layermaxindex());
173 $.layerSetup(___settings___[id]);
174 if ((dragStatus[___id___] == " off " ) || (dragStatus[___id___] == " handler " && ! holdingHandler))
175 return bubblings[ " # " + ___id___];
176
177 isMouseDown = true ;
178 currentElement = $( " # " + ___id___);
179
180 var pos = $.getMousePosition(e);
181 lastMouseX = pos.x;
182 lastMouseY = pos.y;
183
184 lastElemTop = document.getElementById(___id___).offsetTop;
185 lastElemLeft = document.getElementById(___id___).offsetLeft;
186
187 $.updatePosition(e);
188 holdingHandler = true ;
189 });
190
191 $( " # " + _moveid).mouseup( function (e){
192 holdingHandler = false ;
193 });
194 // end setHandler
195 })();
196 },
197 layerclose: function (__id)
198 {
199 $( " # " + __id + " _background " ).remove();
200 $( " # " + __id).remove();
201 },
202 layermaxindex: function ()
203 {
204 var ___index = 0 ;
205 $.each($( " * " ), function (i,n){
206 var __tem = $(n).css( " z-index " );
207 if (__tem > 0 )
208 {
209 if (__tem > ___index)
210 {
211 ___index = __tem + 1 ;
212 }
213 }
214 });
215 return ___index;
216 }
217 });
218 })(jQuery);
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
10 * $Date: 2008-10-09 $
11 */
12 var ___id___ = "" ;
13 var ___settings___ = {};
14 var isMouseDown = false ;
15
16 var currentElement = null ;
17
18 var dropCallbacks = {};
19 var dragCallbacks = {};
20
21 var bubblings = {};
22
23 var lastMouseX;
24 var lastMouseY;
25 var lastElemTop;
26 var lastElemLeft;
27
28 var dragStatus = {};
29
30 var holdingHandler = false ;
31
32 $.getMousePosition = function (e){
33 var posx = 0 ;
34 var posy = 0 ;
35
36 if ( ! e) var e = window.event;
37
38 if (e.pageX || e.pageY) {
39 posx = e.pageX;
40 posy = e.pageY;
41 }
42 else if (e.clientX || e.clientY) {
43 posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
44 posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
45 }
46 return { ' x ' : posx, ' y ' : posy };
47 };
48 $.updatePosition = function (e) {
49 var pos = $.getMousePosition(e);
50
51 var spanX = (pos.x - lastMouseX);
52 var spanY = (pos.y - lastMouseY);
53 var _top = (lastElemTop + spanY) > 0 ? (lastElemTop + spanY) : 0 ;
54 var _left = (lastElemLeft + spanX) > 0 ? (lastElemLeft + spanX) : 0 ;
55 $( " # " + ___id___).css( " top " , _top);
56 $( " # " + ___id___).css( " left " , _left);
57 };
58
59 $.fn.ondrag = function (callback){
60 return this .each( function (){
61 dragCallbacks[ this .id] = callback;
62 });
63 };
64 $.fn.ondrop = function (callback){
65 return this .each( function (){
66 dropCallbacks[ this .id] = callback;
67 });
68 };
69
70 $.fn.dragOff = function (){
71 return this .each( function (){
72 dragStatus[ this .id] = ' off ' ;
73 });
74 };
75
76 $.fn.dragOn = function (){
77 return this .each( function (){
78 dragStatus[ this .id] = ' on ' ;
79 });
80 };
81 $.extend({
82 layerSettings:{
83 id: " layerdiv " ,
84 width: 220 ,
85 height: 220 ,
86 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> ' ,
87 content: '' ,
88 title: '' ,
89 isbg: true ,
90 opacity: 0.3
91 },
92 layerSetup: function ( settings ) {
93 $.extend( $.layerSettings, settings );
94 ___settings___[settings.id] = settings;
95 ___id___ = settings.id;
96 },
97 layershow: function (){
98 var __bw = $( " body " ).width();
99 var __bh = $( " body " ).height() > $(window).height() ? $( " body " ).height() : $(window).height();
100 var _width = $.layerSettings.width;
101 var _height = $.layerSettings.height;
102
103 if (document.getElementById(___id___)) return ;
104 var _moveid = ___id___ + " _move " ;
105 var _titleid = ___id___ + " _title " ;
106 var _contentid = ___id___ + " _content " ;
107 var _cssurl = $.layerSettings.cssurl;
108 var opacity = $.layerSettings.opacity;
109 __index = $.layermaxindex();
110 var __left = (__bw - _width) > 0 ? (__bw - _width) / 2 : 0;
111 var __top = 100 ;
112 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> ' ;
113 if ($.layerSettings.isbg)
114 {
115 $( " body " ).append(__bgDiv);
116 }
117 $( " body " ).append( ' <div id=" ' + ___id___ + ' " style="z-index: ' + __index + ' ;position:absolute; left: ' + __left + ' px; top: ' + __top + ' px;"></div> ' );
118 var _templete = $.layerSettings.templete;
119 var __templete = _templete.replaceAll( " @width@ " ,_width).replaceAll( " @height@ " ,_height).replaceAll( " @titleid@ " ,_titleid).replaceAll( " @contentid@ " ,_contentid).replaceAll( " @title@ " ,jQuery.layerSettings.title).replaceAll( " @moveid@ " ,_moveid);
120 $( " # " + ___id___).append(__templete);
121 $( " # " + _contentid).append($.layerSettings.content);
122 $( " # " + _titleid).append($.layerSettings.title);
123 var idd = ___id___;
124 $( " .layerclose " ).bind( " click " , function ()
125 {
126 $.layerclose(idd);
127 });
128 $( " # " + ___id___).bind( " click " , function ()
129 {
130 var id = this .id;
131 $.layerSetup(___settings___[id]);
132 $( this ).css( " z-index " ,$.layermaxindex());
133 });
134 $(document).bind( " click " , function (e)
135 {
136 var pos = $.getMousePosition(e);
137
138 });
139 $(document).mousemove( function (e){
140 if (isMouseDown && dragStatus[currentElement.id] != ' false ' ){
141 $.updatePosition(e);
142 if (dragCallbacks[currentElement.id] != undefined){
143 dragCallbacks[currentElement.id](e, currentElement);
144 }
145 return false ;
146 }
147 });
148 $(document).mouseup( function (e){
149 if (isMouseDown && dragStatus[currentElement.id] != ' false ' ){
150 isMouseDown = false ;
151 if (dropCallbacks[currentElement.id] != undefined){
152 dropCallbacks[currentElement.id](e, currentElement);
153 }
154 return false ;
155 }
156 });
157 ( function (){
158 bubblings[___id___] = true ;
159
160 dragStatus[___id___] = " on " ;
161
162 // setHandler
163 bubblings[ this .id] = true ;
164
165 dragStatus[_moveid] = " handler " ;
166
167 $( " # " + _moveid).css( " cursor " , " move " );
168
169 $( " # " + _moveid).mousedown( function (e){
170 var id = this .id.replace( " _move " , "" );
171 ___id___ = id;
172 $( " # " + id).css( " z-index " ,$.layermaxindex());
173 $.layerSetup(___settings___[id]);
174 if ((dragStatus[___id___] == " off " ) || (dragStatus[___id___] == " handler " && ! holdingHandler))
175 return bubblings[ " # " + ___id___];
176
177 isMouseDown = true ;
178 currentElement = $( " # " + ___id___);
179
180 var pos = $.getMousePosition(e);
181 lastMouseX = pos.x;
182 lastMouseY = pos.y;
183
184 lastElemTop = document.getElementById(___id___).offsetTop;
185 lastElemLeft = document.getElementById(___id___).offsetLeft;
186
187 $.updatePosition(e);
188 holdingHandler = true ;
189 });
190
191 $( " # " + _moveid).mouseup( function (e){
192 holdingHandler = false ;
193 });
194 // end setHandler
195 })();
196 },
197 layerclose: function (__id)
198 {
199 $( " # " + __id + " _background " ).remove();
200 $( " # " + __id).remove();
201 },
202 layermaxindex: function ()
203 {
204 var ___index = 0 ;
205 $.each($( " * " ), function (i,n){
206 var __tem = $(n).css( " z-index " );
207 if (__tem > 0 )
208 {
209 if (__tem > ___index)
210 {
211 ___index = __tem + 1 ;
212 }
213 }
214 });
215 return ___index;
216 }
217 });
218 })(jQuery);
219
使用方法:
(1)显示层:
function
show()
{
$.layerSetup({
id: " abc " , // 弹出层的ID
title: " test " , // 标题
content: ' test ' , // 内容
isbg: false , // 是否显示背景遮照层
opacity: 0.3 , // 背景遮照层的透明度,值越大透明度越低,0为完全透明,1为不透明
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> ' // 模板
});
$.layershow();
}
{
$.layerSetup({
id: " abc " , // 弹出层的ID
title: " test " , // 标题
content: ' test ' , // 内容
isbg: false , // 是否显示背景遮照层
opacity: 0.3 , // 背景遮照层的透明度,值越大透明度越低,0为完全透明,1为不透明
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> ' // 模板
});
$.layershow();
}
(2)关闭层:
- $.layerclose("弹出层的ID");
注意:那个如果你的模板有CSS文件的话,就要直接引入到本页面就行了,这个简化版不能在别的框架弹出层的,所以也就没有了那个cssurl属性了,也没有target 属性了。
- 相关代码请到http://download.csdn.net/source/678185下载