国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

擴展jquery easyui tree的搜索樹節點方法(推薦)

2019-11-20 08:38:25
字體:
來源:轉載
供稿:網友

如下所示:

/** * 1)擴展jquery easyui tree的節點檢索方法。使用方法如下: * $("#treeId").tree("search", searchText);	  * 其中,treeId為easyui tree的根UL元素的ID,searchText為檢索的文本。 * 如果searchText為空或"",將恢復展示所有節點為正常狀態 */(function($) {			$.extend($.fn.tree.methods, {		/**		 * 擴展easyui tree的搜索方法		 * @param tree easyui tree的根DOM節點(UL節點)的jQuery對象		 * @param searchText 檢索的文本		 * @param this-context easyui tree的tree對象		 */		search: function(jqTree, searchText) {			//easyui tree的tree對象??梢酝ㄟ^tree.methodName(jqTree)方式調用easyui tree的方法			var tree = this;						//獲取所有的樹節點			var nodeList = getAllNodes(jqTree, tree);				 		//如果沒有搜索條件,則展示所有樹節點			searchText = $.trim(searchText);	 		if (searchText == "") {	 			for (var i=0; i<nodeList.length; i++) {	 				$(".tree-node-targeted", nodeList[i].target).removeClass("tree-node-targeted");	 	 			$(nodeList[i].target).show();	 	 		}	 			//展開已選擇的節點(如果之前選擇了)	 			var selectedNode = tree.getSelected(jqTree);	 			if (selectedNode) {	 				tree.expandTo(jqTree, selectedNode.target);	 			}	 			return;	 		}	 			 		//搜索匹配的節點并高亮顯示	 		var matchedNodeList = [];	 		if (nodeList && nodeList.length>0) {	 			var node = null;	 			for (var i=0; i<nodeList.length; i++) {	 				node = nodeList[i];	 				if (isMatch(searchText, node.text)) {	 					matchedNodeList.push(node);	 				}	 			}	 				 			//隱藏所有節點	 	 		for (var i=0; i<nodeList.length; i++) {	 	 			$(".tree-node-targeted", nodeList[i].target).removeClass("tree-node-targeted");	 	 			$(nodeList[i].target).hide();	 	 		} 				 				 			//折疊所有節點	 	 		tree.collapseAll(jqTree);	 				 			//展示所有匹配的節點以及父節點 				 			for (var i=0; i<matchedNodeList.length; i++) {	 				showMatchedNode(jqTree, tree, matchedNodeList[i]);	 			}	 		} 	 		},				/**		 * 展示節點的子節點(子節點有可能在搜索的過程中被隱藏了)		 * @param node easyui tree節點		 */		showChildren: function(jqTree, node) {			//easyui tree的tree對象??梢酝ㄟ^tree.methodName(jqTree)方式調用easyui tree的方法			var tree = this;						//展示子節點			if (!tree.isLeaf(jqTree, node.target)) {				var children = tree.getChildren(jqTree, node.target);				if (children && children.length>0) {					for (var i=0; i<children.length; i++) {						if ($(children[i].target).is(":hidden")) {							$(children[i].target).show();						}					}				}			} 			},				/**		 * 將滾動條滾動到指定的節點位置,使該節點可見(如果有滾動條才滾動,沒有滾動條就不滾動)		 * @param param {		 * 	 treeContainer: easyui tree的容器(即存在滾動條的樹容器)。如果為null,則取easyui tree的根UL節點的父節點。		 *  targetNode: 將要滾動到的easyui tree節點。如果targetNode為空,則默認滾動到當前已選中的節點,如果沒有選中的節點,則不滾動		 * } 		 */		scrollTo: function(jqTree, param) {			//easyui tree的tree對象??梢酝ㄟ^tree.methodName(jqTree)方式調用easyui tree的方法			var tree = this;						//如果node為空,則獲取當前選中的node			var targetNode = param && param.targetNode ? param.targetNode : tree.getSelected(jqTree);						if (targetNode != null) {				//判斷節點是否在可視區域								var root = tree.getRoot(jqTree);				var $targetNode = $(targetNode.target);				var container = param && param.treeContainer ? param.treeContainer : jqTree.parent();				var containerH = container.height();				var nodeOffsetHeight = $targetNode.offset().top - container.offset().top;				if (nodeOffsetHeight > (containerH - 30)) {					var scrollHeight = container.scrollTop() + nodeOffsetHeight - containerH + 30;					container.scrollTop(scrollHeight);				}										}		}	});					/**	 * 展示搜索匹配的節點	 */	function showMatchedNode(jqTree, tree, node) { 		//展示所有父節點 		$(node.target).show(); 		$(".tree-title", node.target).addClass("tree-node-targeted"); 		var pNode = node; 		while ((pNode = tree.getParent(jqTree, pNode.target))) { 			$(pNode.target).show(); 			 		} 		//展開到該節點 		tree.expandTo(jqTree, node.target); 		//如果是非葉子節點,需折疊該節點的所有子節點 		if (!tree.isLeaf(jqTree, node.target)) { 			tree.collapse(jqTree, node.target); 		} 	} 	 		/**	 * 判斷searchText是否與targetText匹配	 * @param searchText 檢索的文本	 * @param targetText 目標文本	 * @return true-檢索的文本與目標文本匹配;否則為false.	 */	function isMatch(searchText, targetText) { 		return $.trim(targetText)!="" && targetText.indexOf(searchText)!=-1; 	}		/**	 * 獲取easyui tree的所有node節點	 */	function getAllNodes(jqTree, tree) {		var allNodeList = jqTree.data("allNodeList");		if (!allNodeList) {			var roots = tree.getRoots(jqTree); 			allNodeList = getChildNodeList(jqTree, tree, roots); 			jqTree.data("allNodeList", allNodeList);		} 		return allNodeList; 	} 		/**	 * 定義獲取easyui tree的子節點的遞歸算法	 */ 	function getChildNodeList(jqTree, tree, nodes) { 		var childNodeList = []; 		if (nodes && nodes.length>0) { 			 			var node = null; 			for (var i=0; i<nodes.length; i++) { 				node = nodes[i]; 				childNodeList.push(node); 				if (!tree.isLeaf(jqTree, node.target)) { 					var children = tree.getChildren(jqTree, node.target); 					childNodeList = childNodeList.concat(getChildNodeList(jqTree, tree, children)); 				} 			} 		} 		return childNodeList; 	}})(jQuery);

因為jquery easyui tree原生的搜索只支持ID搜索,所以擴展了jquery easyui tree搜索樹節點的方法,使其支持節點名稱的模糊匹配,并將不匹配的節點隱藏。

以上就是小編為大家帶來的擴展jquery easyui tree的搜索樹節點方法(推薦)全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙海市| 永州市| 敦煌市| 海伦市| 西城区| 盐山县| 进贤县| 宝应县| 河北省| 淮南市| 嘉禾县| 互助| 福州市| 德阳市| 西丰县| 六安市| 龙泉市| 松滋市| 阳曲县| 科技| 昌平区| 正安县| 正镶白旗| 炉霍县| 贵港市| 怀柔区| 景宁| 华安县| 平遥县| 石景山区| 阿鲁科尔沁旗| 五原县| 饶河县| 铜陵市| 石城县| 安岳县| 随州市| 鄯善县| 启东市| 龙口市| 桐梓县|