1 /**
2 * Created by Administrator on 2014/6/5 0005. Base-drag 基于Base库的拖拽插件 tags为你要拖拽的元素参数, 数组形式传入
3 */
4
5 $().extend('drag', function () {
6 var tags = arguments;
7 for (var i = 0; i < this.elements.length; i ++) {
8 addEvent(this.elements[i], 'mousedown', function (e) {
9 if (trim(this.innerHTML).length == 0) e.preventDefault();
10 var _this = this;
11 var diffX = e.clientX - _this.offsetLeft;
12 var diffY = e.clientY - _this.offsetTop;
13
14 //自定义拖拽区域
15 var flag = false;
16
17 for (var i = 0; i < tags.length; i ++) {
18 if (e.target == tags[i]) {
19 flag = true; //只要有一个是true,就立刻返回
20 break;
21 }
22 }
23
24 if (flag) {
25 addEvent(document, 'mousemove', move);
26 addEvent(document, 'mouseup', up);
27 } else {
28 removeEvent(document, 'mousemove', move);
29 removeEvent(document, 'mouseup', up);
30 }
31
32 function move(e) {
33 var left = e.clientX - diffX;
34 var top = e.clientY - diffY;
35
36 if (left < 0) {
37 left = 0;
38 } else if (left <= getScroll().left) {
39 left = getScroll().left;
40 } else if (left > getInner().width + getScroll().left - _this.offsetWidth) {
41 left = getInner().width + getScroll().left - _this.offsetWidth;
42 }
43
44 if (top < 0) {
45 top = 0;
46 } else if (top <= getScroll().top) {
47 top = getScroll().top;
48 } else if (top > getInner().height + getScroll().top - _this.offsetHeight) {
49 top = getInner().height + getScroll().top - _this.offsetHeight;
50 }
51
52 _this.style.left = left + 'px';
53 _this.style.top = top + 'px';
54
55 if (typeof _this.setCapture != 'undefined') {
56 _this.setCapture();
57 }
58 }
59
60 function up() {
61 removeEvent(document, 'mousemove', move);
62 removeEvent(document, 'mouseup', up);
63 if (typeof _this.releaseCapture != 'undefined') {
64 _this.releaseCapture();
65 }
66 }
67 });
68 }
69 return this;
70 });