⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dragdrop.js

📁 6个ajax应用.包括拖动
💻 JS
字号:
/********************************************************** Adapted from the sortable lists example by Tim Taylor http://tool-man.org/examples/sorting.html Modified by Tom Westcott : http://www.cyberdummy.co.uk  **********************************************************/var DragDrop = {	firstContainer : null,	lastContainer : null,        parent_id : null,        parent_group : null,	makeListContainer : function(list, group) {		// each container becomes a linked list node		if (this.firstContainer == null) {			this.firstContainer = this.lastContainer = list;			list.previousContainer = null;			list.nextContainer = null;		} else {			list.previousContainer = this.lastContainer;			list.nextContainer = null;			this.lastContainer.nextContainer = list;			this.lastContainer = list;		}				// these functions are called when an item is draged over		// a container or out of a container bounds.  onDragOut		// is also called when the drag ends with an item having		// been added to the container		list.onDragOver = new Function();		list.onDragOut = new Function();                list.onDragDrop = new Function();                list.group = group;		    	var items = list.getElementsByTagName( "li" );    			for (var i = 0; i < items.length; i++) {			DragDrop.makeItemDragable(items[i]);		}	},                serData : function ( group, theid ) {                var container = DragDrop.firstContainer;		var j = 0;                var string = "";                                while (container != null) {                                        if(theid != null && container.id != theid)                        {                          container = container.nextContainer;                          continue;                        }                        if(group != null && container.group != group)                        {                          container = container.nextContainer;                          continue;                        }                                        j ++;                        if(j > 1)                        {                          string += ":";                        }                        string += container.id;                                                var items = container.getElementsByTagName( "li" );    	                string += "(";		        for (var i = 0; i < items.length; i++) {                            if(i > 0)                            {                              string += ",";                            }			    string += items[i].id;		        }                        string += ")";                        			container = container.nextContainer;		}                return string;           },	makeItemDragable : function(item) {		Drag.makeDraggable(item);		item.setDragThreshold(5);				// tracks if the item is currently outside all containers		item.isOutside = false;				item.onDragStart = DragDrop.onDragStart;		item.onDrag = DragDrop.onDrag;		item.onDragEnd = DragDrop.onDragEnd;	},	onDragStart : function(nwPosition, sePosition, nwOffset, seOffset) {		// update all container bounds, since they may have changed		// on a previous drag		//		// could be more smart about when to do this		var container = DragDrop.firstContainer;		while (container != null) {			container.northwest = Coordinates.northwestOffset( container, true );			container.southeast = Coordinates.southeastOffset( container, true );			container = container.nextContainer;		}				// item starts out over current parent		this.parentNode.onDragOver();                parent_id = this.parentNode.id;                parent_group = this.parentNode.group;	},	onDrag : function(nwPosition, sePosition, nwOffset, seOffset) {		// check if we were nowhere		if (this.isOutside) {			// check each container to see if in its bounds			var container = DragDrop.firstContainer;			while (container != null) {				if ((nwOffset.inside( container.northwest, container.southeast ) ||					seOffset.inside( container.northwest, container.southeast )) && container.group == parent_group) {					// we're inside this one					container.onDragOver();					this.isOutside = false;										// since isOutside was true, the current parent is a					// temporary clone of some previous container node and					// it needs to be removed from the document					var tempParent = this.parentNode;					tempParent.removeChild( this );					container.appendChild( this );					tempParent.parentNode.removeChild( tempParent );					break;				}				container = container.nextContainer;			}			// we're still not inside the bounds of any container			if (this.isOutside)				return;				// check if we're outside our parent's bounds		} else if (!(nwOffset.inside( this.parentNode.northwest, this.parentNode.southeast ) ||			seOffset.inside( this.parentNode.northwest, this.parentNode.southeast ))) {						this.parentNode.onDragOut();			this.isOutside = true;						// check if we're inside a new container's bounds			var container = DragDrop.firstContainer;			while (container != null) {				if ((nwOffset.inside( container.northwest, container.southeast ) ||					seOffset.inside( container.northwest, container.southeast )) && container.group == parent_group) {					// we're inside this one					container.onDragOver();					this.isOutside = false;					this.parentNode.removeChild( this );					container.appendChild( this );					break;				}				container = container.nextContainer;			}			// if we're not in any container now, make a temporary clone of			// the previous container node and add it to the document			if (this.isOutside) {				var tempParent = this.parentNode.cloneNode( false );				this.parentNode.removeChild( this );				tempParent.appendChild( this );				// body puts a border or item at bottom of page if do not have this                                tempParent.style.border = 0;				document.getElementsByTagName( "body" ).item(0).appendChild( tempParent );				return;			}		}				// if we get here, we're inside some container bounds, so we do		// everything the original dragsort script did to swap us into the		// correct position				var parent = this.parentNode;						var item = this;		var next = DragUtils.nextItem(item);		while (next != null && this.offsetTop >= next.offsetTop - 2) {			var item = next;			var next = DragUtils.nextItem(item);		}		if (this != item) {			DragUtils.swap(this, next);			return;		}		var item = this;		var previous = DragUtils.previousItem(item);		while (previous != null && this.offsetTop <= previous.offsetTop + 2) {			var item = previous;			var previous = DragUtils.previousItem(item);		}		if (this != item) {			DragUtils.swap(this, item);			return;		}	},	onDragEnd : function(nwPosition, sePosition, nwOffset, seOffset) {		// if the drag ends and we're still outside all containers		// it's time to remove ourselves from the document or add                 // to the trash bin		if (this.isOutside) {                        var container = DragDrop.firstContainer;                        while (container != null) {                           if(container.id == parent_id)                           {                             break;                           }                           container = container.nextContainer;                        }			this.isOutside = false;			this.parentNode.removeChild( this );			container.appendChild( this );                        this.style["top"] = "0px";		        this.style["left"] = "0px";                        //var container = DragDrop.firstContainer;                        //container.appendChild( this );			return;		}		this.parentNode.onDragOut();                this.parentNode.onDragDrop();      		this.style["top"] = "0px";		this.style["left"] = "0px";	}};var DragUtils = {	swap : function(item1, item2) {		var parent = item1.parentNode;		parent.removeChild(item1);		parent.insertBefore(item1, item2);		item1.style["top"] = "0px";		item1.style["left"] = "0px";	},	nextItem : function(item) {		var sibling = item.nextSibling;		while (sibling != null) {			if (sibling.nodeName == item.nodeName) return sibling;			sibling = sibling.nextSibling;		}		return null;	},	previousItem : function(item) {		var sibling = item.previousSibling;		while (sibling != null) {			if (sibling.nodeName == item.nodeName) return sibling;			sibling = sibling.previousSibling;		}		return null;	}		};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -