亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? selection.js

?? js基本操作
?? JS
字號:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.selection.Selection");dojo.require("dojo.lang.array");dojo.require("dojo.lang.func");dojo.require("dojo.lang.common");dojo.require("dojo.math");dojo.declare("dojo.selection.Selection", null,	{		initializer: function(items, isCollection){			this.items = [];			this.selection = [];			this._pivotItems = [];			this.clearItems();			if(items) {				if(isCollection) {					this.setItemsCollection(items);				} else {					this.setItems(items);				}			}		},		// Array: items to select from, order matters for growable selections		items: null,		// Array: items selected, aren't stored in order (see sorted())		selection: null, 		lastSelected: null, // last item selected		// Boolean: if true, grow selection will start from 0th item when nothing is selected		allowImplicit: true, 		// Integer: number of *selected* items		length: 0, 		// Boolean:		//		if true, the selection is treated as an in-order and can grow		//		by ranges, not just by single item		isGrowable: true,		_pivotItems: null, // stack of pivot items		_pivotItem: null, // item we grow selections from, top of stack		// event handlers		onSelect: function(item){			// summary: slot to be connect()'d to		},		onDeselect: function(item){			// summary: slot to be connect()'d to		},		onSelectChange: function(item, selected){			// summary: slot to be connect()'d to		},		_find: function(item, inSelection) {			if(inSelection) {				return dojo.lang.find(this.selection, item);			} else {				return dojo.lang.find(this.items, item);			}		},		isSelectable: function(/*Object*/item){			// summary:			//		user-customizable and should be over-ridden, will filter			//		items through this			return true; // boolean		},		setItems: function(/* ... */){			// summary:			//		adds all passed arguments to the items array, removing any			//		previously selected items.			this.clearItems();			this.addItems.call(this, arguments);		}, 		setItemsCollection: function(/*Object*/collection){			// summary:			//		like setItems, but use in case you have an active			//		collection array-like object (i.e. getElementsByTagName			//		collection) that manages its own order and item list			this.items = collection;		},		addItems: function(/* ... */){			// summary:			//		adds all passed arguments to the items array			var args = dojo.lang.unnest(arguments);			for(var i = 0; i < args.length; i++){				this.items.push(args[i]);			}		},		addItemsAt: function(/*Object*/item, /*Object*/before /* ... */){			// summary:			//		add items to the array after the the passed "before" item.			if(this.items.length == 0){ // work for empy case				return this.addItems(dojo.lang.toArray(arguments, 2));			}			if(!this.isItem(item)){				item = this.items[item];			}			if(!item){ throw new Error("addItemsAt: item doesn't exist"); }			var idx = this._find(item);			if(idx > 0 && before){ idx--; }			for(var i = 2; i < arguments.length; i++){				if(!this.isItem(arguments[i])){					this.items.splice(idx++, 0, arguments[i]);				}			}		},		removeItem: function(/*Object*/item){			// summary: remove item			var idx = this._find(item);			if(idx > -1) {				this.items.splice(idx, 1);			}			// remove from selection			// FIXME: do we call deselect? I don't think so because this isn't how			// you usually want to deselect an item. For example, if you deleted an			// item, you don't really want to deselect it -- you want it gone. -DS			idx = this._find(item, true);			if(idx > -1) {				this.selection.splice(idx, 1);			}		},		clearItems: function(){			// summary: remove and uselect all items			this.items = [];			this.deselectAll();		},		isItem: function(/*Object*/item){			// summary: do we already "know" about the passed item?			return this._find(item) > -1; // boolean		},		isSelected: function(/*Object*/item){			// summary:			//		do we know about the item and is it selected by this			//		selection?			return this._find(item, true) > -1; // boolean		},		/**		 * allows you to filter item in or out of the selection		 * depending on the current selection and action to be taken		**/		selectFilter: function(item, selection, add, grow) {			return true;		},		update: function(/*Object*/item, /*Boolean*/add, /*Boolean*/grow, noToggle) {			// summary: manages selections, most selecting should be done here			// item: item which may be added/grown to/only selected/deselected			// add: behaves like ctrl in windows selection world			// grow: behaves like shift			// noToggle: if true, don't toggle selection on item			if(!this.isItem(item)){ return false; } // boolean			if(this.isGrowable && grow){				if( (!this.isSelected(item)) && 					this.selectFilter(item, this.selection, false, true) ){					this.grow(item);					this.lastSelected = item;				}			}else if(add){				if(this.selectFilter(item, this.selection, true, false)){					if(noToggle){						if(this.select(item)){							this.lastSelected = item;						}					}else if(this.toggleSelected(item)){						this.lastSelected = item;					}				}			}else{				this.deselectAll();				this.select(item);			}			this.length = this.selection.length;			return true; // Boolean		},		grow: function(/*Object*/toItem, /*Object*/fromItem){			// summary:			//		Grow a selection. Any items in (fromItem, lastSelected]			//		that aren't part of (fromItem, toItem] will be deselected			// toItem: which item to grow selection to			// fromItem: which item to start the growth from (it won't be selected)			if(!this.isGrowable){ return; }			if(arguments.length == 1){				fromItem = this._pivotItem;				if(!fromItem && this.allowImplicit){					fromItem = this.items[0];				}			}			if(!toItem || !fromItem){ return false; }			var fromIdx = this._find(fromItem);			// get items to deselect (fromItem, lastSelected]			var toDeselect = {};			var lastIdx = -1;			if(this.lastSelected){				lastIdx = this._find(this.lastSelected);				var step = fromIdx < lastIdx ? -1 : 1;				var range = dojo.math.range(lastIdx, fromIdx, step);				for(var i = 0; i < range.length; i++){					toDeselect[range[i]] = true;				}			}			// add selection (fromItem, toItem]			var toIdx = this._find(toItem);			var step = fromIdx < toIdx ? -1 : 1;			var shrink = lastIdx >= 0 && step == 1 ? lastIdx < toIdx : lastIdx > toIdx;			var range = dojo.math.range(toIdx, fromIdx, step);			if(range.length){				for(var i = range.length-1; i >= 0; i--){					var item = this.items[range[i]];					if(this.selectFilter(item, this.selection, false, true)){						if(this.select(item, true) || shrink){							this.lastSelected = item;						}						if(range[i] in toDeselect){							delete toDeselect[range[i]];						}					}				}			}else{				this.lastSelected = fromItem;			}			// now deselect...			for(var i in toDeselect){				if(this.items[i] == this.lastSelected){					//dojo.debug("oops!");				}				this.deselect(this.items[i]);			}			// make sure everything is all kosher after selections+deselections			this._updatePivot();		},		growUp: function(){			// summary: Grow selection upwards one item from lastSelected			if(!this.isGrowable){ return; }			var idx = this._find(this.lastSelected) - 1;			while(idx >= 0){				if(this.selectFilter(this.items[idx], this.selection, false, true)){					this.grow(this.items[idx]);					break;				}				idx--;			}		},		growDown: function(){			// summary: Grow selection downwards one item from lastSelected			if(!this.isGrowable){ return; }			var idx = this._find(this.lastSelected);			if(idx < 0 && this.allowImplicit){				this.select(this.items[0]);				idx = 0;			}			idx++;			while(idx > 0 && idx < this.items.length){				if(this.selectFilter(this.items[idx], this.selection, false, true)){					this.grow(this.items[idx]);					break;				}				idx++;			}		},		toggleSelected: function(/*Object*/item, /*Boolean*/noPivot){			// summary:			//		like it says on the tin. If noPivot is true, no selection			//		pivot is added (or removed) from the selection. Returns 1			//		if the item is selected, -1 if it is deselected, and 0 if			//		the item is not under management.			if(this.isItem(item)){				if(this.select(item, noPivot)){ return 1; }				if(this.deselect(item)){ return -1; }			}			return 0;		},		select: function(/*Object*/item, /*Boolean*/noPivot){			// summary:			//		like it says on the tin. If noPivot is true, no selection			//		pivot is added  from the selection.			if(this.isItem(item) && !this.isSelected(item)				&& this.isSelectable(item)){				this.selection.push(item);				this.lastSelected = item;				this.onSelect(item);				this.onSelectChange(item, true);				if(!noPivot){					this._addPivot(item);				}				this.length = this.selection.length;				return true;			}			return false;		},		deselect: function(item){			// summary: deselects the item if it's selected.			var idx = this._find(item, true);			if(idx > -1){				this.selection.splice(idx, 1);				this.onDeselect(item);				this.onSelectChange(item, false);				if(item == this.lastSelected){					this.lastSelected = null;				}				this._removePivot(item);				this.length = this.selection.length;				return true;			}			return false;		},		selectAll: function(){			// summary: selects all known items			for(var i = 0; i < this.items.length; i++){				this.select(this.items[i]);			}		},		deselectAll: function(){			// summary: deselects all currently selected items			while(this.selection && this.selection.length){				this.deselect(this.selection[0]);			}		},		selectNext: function(){			// summary:			//		clobbers the existing selection (if any) and selects the			//		next item "below" the previous "bottom" selection. Returns			//		whether or not selection was successful.			var idx = this._find(this.lastSelected);			while(idx > -1 && ++idx < this.items.length){				if(this.isSelectable(this.items[idx])){					this.deselectAll();					this.select(this.items[idx]);					return true;				}			}			return false;		},		selectPrevious: function(){			// summary:			//		clobbers the existing selection (if any) and selects the			//		item "above" the previous "top" selection. Returns whether			//		or not selection was successful.			var idx = this._find(this.lastSelected);			while(idx-- > 0){				if(this.isSelectable(this.items[idx])){					this.deselectAll();					this.select(this.items[idx]);					return true;				}			}			return false;		},		selectFirst: function(){			// summary:			//		select first selectable item. Returns whether or not an			//		item was selected.			this.deselectAll();			var idx = 0;			while(this.items[idx] && !this.select(this.items[idx])){				idx++;			}			return this.items[idx] ? true : false;		},		selectLast: function(){			// summary: select last selectable item			this.deselectAll();			var idx = this.items.length-1;			while(this.items[idx] && !this.select(this.items[idx])) {				idx--;			}			return this.items[idx] ? true : false;		},		_addPivot: function(item, andClear){			this._pivotItem = item;			if(andClear){				this._pivotItems = [item];			}else{				this._pivotItems.push(item);			}		},		_removePivot: function(item){			var i = dojo.lang.find(this._pivotItems, item);			if(i > -1){				this._pivotItems.splice(i, 1);				this._pivotItem = this._pivotItems[this._pivotItems.length-1];			}			this._updatePivot();		},		_updatePivot: function(){			if(this._pivotItems.length == 0){				if(this.lastSelected){					this._addPivot(this.lastSelected);				}			}		},		sorted: function(){			// summary: returns an array of items in sort order			return dojo.lang.toArray(this.selection).sort(				dojo.lang.hitch(this, function(a, b){					var A = this._find(a), B = this._find(b);					if(A > B){						return 1;					}else if(A < B){						return -1;					}else{						return 0;					}				})			);		},		updateSelected: function(){			// summary: 			//		remove any items from the selection that are no longer in			//		this.items			for(var i = 0; i < this.selection.length; i++) {				if(this._find(this.selection[i]) < 0) {					var removed = this.selection.splice(i, 1);					this._removePivot(removed[0]);				}			}			this.length = this.selection.length;		}	});

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品日日摸夜夜摸av| 91精品国产综合久久福利| 99久久精品一区二区| 欧美亚洲国产bt| 欧美精品一区二区久久久| 亚洲欧美日韩久久| 九一九一国产精品| 97超碰欧美中文字幕| 国产亚洲欧洲一区高清在线观看| 亚洲三级在线免费观看| 国产精品夜夜嗨| 日韩三级av在线播放| 亚洲一区二区三区三| 不卡的av中国片| 精品三级av在线| 日韩av在线发布| 91福利小视频| 亚洲精选视频免费看| 成人美女在线视频| 国产欧美日韩综合精品一区二区| 日本不卡一二三| 精品视频在线免费看| 亚洲精品成人悠悠色影视| 成人激情动漫在线观看| 26uuu国产日韩综合| 青青青爽久久午夜综合久久午夜| 91免费国产视频网站| 综合色中文字幕| 国产jizzjizz一区二区| 精品美女一区二区三区| 蜜桃一区二区三区在线观看| 欧美美女网站色| 偷窥少妇高潮呻吟av久久免费| 91黄色在线观看| 亚洲一线二线三线久久久| 色久优优欧美色久优优| 亚洲乱码一区二区三区在线观看| av电影一区二区| 国产精品国产三级国产有无不卡 | 亚洲国产精品成人综合色在线婷婷 | 日本一不卡视频| 91精品国产日韩91久久久久久| 日韩成人伦理电影在线观看| 欧美一区二视频| 久国产精品韩国三级视频| 欧美精品一区二区三| 懂色av中文一区二区三区| 国产精品国产三级国产a| 色av一区二区| 日韩电影在线看| 精品国一区二区三区| 精品一区二区在线播放| 久久综合狠狠综合久久综合88| 国产福利一区二区三区| 亚洲日韩欧美一区二区在线| 欧美日韩精品专区| 美女一区二区视频| 中文字幕av一区二区三区免费看| 不卡一卡二卡三乱码免费网站| 亚洲色图欧美在线| 91精选在线观看| 国产伦精品一区二区三区免费| 欧美激情一区二区三区不卡| 色8久久人人97超碰香蕉987| 日韩高清欧美激情| 国产精品久久久久影视| 欧美丝袜丝nylons| 久久精品国产久精国产| 中文字幕亚洲一区二区va在线| 欧美色倩网站大全免费| 国产美女精品在线| 综合久久一区二区三区| 91精品啪在线观看国产60岁| 福利一区在线观看| 午夜国产精品一区| 欧美国产日韩a欧美在线观看| 91久久国产综合久久| 青草av.久久免费一区| 国产精品成人免费| 欧美xingq一区二区| 色综合天天狠狠| 国产很黄免费观看久久| 性欧美大战久久久久久久久| 欧美激情一区二区| 欧美一级淫片007| 在线视频综合导航| 国产成人久久精品77777最新版本| 亚洲综合区在线| 国产精品入口麻豆原神| 精品欧美乱码久久久久久1区2区| 色婷婷久久综合| 成人一区在线观看| 开心九九激情九九欧美日韩精美视频电影 | 欧美日韩高清一区二区三区| 99在线热播精品免费| 国模大尺度一区二区三区| 亚洲.国产.中文慕字在线| 亚洲视频一区二区在线| 国产欧美一区二区三区鸳鸯浴 | 在线观看不卡视频| 成av人片一区二区| 国产自产视频一区二区三区| 亚洲不卡一区二区三区| 一区二区三区在线播放| 国产精品乱码一区二区三区软件| 精品日韩欧美在线| 欧美一区二区视频观看视频| 欧美色图免费看| 色88888久久久久久影院野外| zzijzzij亚洲日本少妇熟睡| 懂色av一区二区夜夜嗨| 欧美最新大片在线看| 成人激情校园春色| www.亚洲色图.com| www.综合网.com| 91免费看片在线观看| 91偷拍与自偷拍精品| 91在线精品秘密一区二区| 99久久99久久综合| 色婷婷综合久久久中文字幕| 在线视频你懂得一区| 一本色道亚洲精品aⅴ| 一本色道a无线码一区v| 色丁香久综合在线久综合在线观看| 91视频免费观看| 欧美亚洲愉拍一区二区| 欧美精品黑人性xxxx| 日韩一区二区中文字幕| 精品欧美一区二区三区精品久久| 精品久久久网站| 欧美高清在线视频| 亚洲最快最全在线视频| 婷婷六月综合网| 久久激五月天综合精品| 懂色av一区二区在线播放| 色婷婷av一区二区三区软件| 欧美久久久久久久久中文字幕| 欧美日本一区二区| www国产精品av| 亚洲日本在线视频观看| 天天色天天操综合| 国产激情一区二区三区四区 | 自拍偷自拍亚洲精品播放| 亚洲精品v日韩精品| 日韩成人精品视频| 国产一区二区免费视频| 91在线观看高清| 欧美人体做爰大胆视频| 欧美电影免费观看高清完整版在线 | 亚洲色欲色欲www| 日韩电影一区二区三区四区| 国产成人精品亚洲午夜麻豆| 色婷婷av久久久久久久| 精品欧美久久久| 亚洲美女视频在线观看| 日韩av电影免费观看高清完整版 | 在线观看日韩av先锋影音电影院| 日韩一区二区三区四区五区六区 | 97se狠狠狠综合亚洲狠狠| 91精品国产91综合久久蜜臀| 久久精品一区二区三区不卡牛牛 | 欧美激情一区二区三区四区| 亚洲成人精品在线观看| 国产精品88888| 欧美一区二区在线免费播放| 日韩理论片网站| 精品亚洲porn| 日本福利一区二区| 国产视频亚洲色图| 麻豆精品视频在线观看免费| 日本精品一区二区三区高清| 国产女主播视频一区二区| 日韩中文字幕区一区有砖一区 | 91黄色免费观看| 国产目拍亚洲精品99久久精品| 视频一区中文字幕| 91久久奴性调教| 日韩一区有码在线| 国产精品自拍av| 日韩精品一区二区三区在线观看| 亚洲自拍偷拍欧美| 色综合久久九月婷婷色综合| 国产亚洲欧美日韩日本| 精品中文字幕一区二区小辣椒| 欧美日韩久久一区| 亚洲美女屁股眼交| 成人va在线观看| 国产日产亚洲精品系列| 喷水一区二区三区| 欧美乱妇23p| 亚洲一区二区三区视频在线| 色狠狠一区二区三区香蕉| 最近日韩中文字幕| av不卡在线观看| 国产精品对白交换视频 | 国产精品伦理在线| 国产宾馆实践打屁股91| 久久久亚洲综合| 国产精品一区二区在线观看不卡| 精品人在线二区三区|