0 0

关于jquery treeview使用的问题!15

在使用jquery treeview做树型时,由于数据量比较大的!
所以小弟想在展开每个节点时去加载该节点下的所有子节点,目前这里没问题但是出现了这样一个问题就是在加载好节点后,在单击父节点时,应该是收缩节点才对,但是它并没有收缩。小弟是修改了tree view 的原码。
这是原码
(function($) {

	// classes used by the plugin
	// need to be styled via external stylesheet, see first example
	var CLASSES = {
		open: "open",
		closed: "closed",
		expandable: "expandable",
		collapsable: "collapsable",
		lastCollapsable: "lastCollapsable",
		lastExpandable: "lastExpandable",
		last: "last",
		hitarea: "hitarea",
		clickcount:'0'
	};
	
	$.extend($.fn, {
		swapClass: function(c1, c2) {
			return this.each(function() {
				var $this = $(this);
				if ( $.className.has(this, c1) )
					$this.removeClass(c1).addClass(c2);
				else if ( $.className.has(this, c2) )
					$this.removeClass(c2).addClass(c1);
			});
		},
		replaceClass: function(c1, c2) {
			return this.each(function() {
				var $this = $(this);
				if ( $.className.has(this, c1) )
					$this.removeClass(c1).addClass(c2);
			});
		},
		hoverClass: function(className) {
			className = className || "hover";
			return this.hover(function() {
				$(this).addClass(className);
			}, function() {
				$(this).removeClass(className);
			});
		},
		heightToggle: function(animated, callback) {
		
			animated ?
				this.animate({ height: "toggle" }, animated, callback)
				 :
				this.each(function(){
					
					jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
					if(callback)
						callback.apply(this, arguments);
				});
		},
		heightHide: function(animated, callback) {
			if (animated) {
				this.animate({ height: "hide" }, animated, callback)
			} else {
				this.hide();
				if (callback)
					this.each(callback);				
			}
		},
		prepareBranches: function(settings) {
		      
			// mark last tree items
			this.filter(":last-child").addClass(CLASSES.last);
			// collapse whole tree, or only those marked as closed, anyway except those marked as open
			this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
			// return all items with sublists
			return this.filter(":has(>ul)");
		},
		applyClasses: function(settings, toggler) {
			this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
				if ( this == event.target ) {
					toggler.apply($(this).next());
				}
			}).add( $("a", this) ).hoverClass();
			
			// handle closed ones first
			this.filter(":has(>ul:hidden)")
					.addClass(CLASSES.expandable)
					.replaceClass(CLASSES.last, CLASSES.lastExpandable);
					
			// handle open ones
			this.not(":has(>ul:hidden)")
					.addClass(CLASSES.collapsable)
					.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
					
            // create hitarea
			this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>")
				.find("div." + CLASSES.hitarea).click( toggler )
		},
		treeview: function(settings) {
			// currently no defaults necessary, all implicit
			settings = $.extend({}, settings);
			
			if (settings.add) {
				return this.trigger("add", [settings.add]);
			}
			
			if (settings.toggle ) {
			
				var callback = settings.toggle;
				settings.toggle = function() {
					return callback.apply($(this).parent()[0], arguments);
				}
			}
		
			// factory for treecontroller
			function treeController(tree, control) {
				// factory for click handlers
				function handler(filter) {
					return function() {
						// reuse toggle event handler, applying the elements to toggle
						// start searching for all hitareas
						toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
							// for plain toggle, no filter is provided, otherwise we need to check the parent element
							return filter ? $(this).parent("." + filter).length : true;
						}) );
						return false;
					}
				}
				// click on first element to collapse tree
				$(":eq(0)", control).click( handler(CLASSES.collapsable) );
				// click on second to expand tree
				$(":eq(1)", control).click( handler(CLASSES.expandable) );
				// click on third to toggle tree
				$(":eq(2)", control).click( handler() ); 
			}
			var c=1;
			// handle toggle event
			function toggler() {
			
			var s=Math.round(Math.random()*10000);
			 var t=$(this).parent().html();
			 var pub_name = $(this).parent().attr("title");
				// this refers to hitareas, we need to find the parent lis first
				
					
						$(this).parent()
					// swap classes
					.swapClass( CLASSES.collapsable, CLASSES.expandable )
					.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
					// find child lists
					.find( ">ul" )
					.heightToggle( settings.animated, settings.toggle );
                    // toggle them
                    

				if ( settings.unique ) {
					$(this).parent()
						.siblings()
						.replaceClass( CLASSES.collapsable, CLASSES.expandable )
						.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
						.find( ">ul" )
						.heightHide( settings.animated, settings.toggle );
				}
			}
			
			function serialize() {
				function binary(arg) {
					return arg ? 1 : 0;
				}
				var data = [];
				branches.each(function(i, e) {
					data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
				});
				$.cookie("treeview", data.join("") );
			}
			
			function deserialize() {
				var stored = $.cookie("treeview");
				if ( stored ) {
					var data = stored.split("");
					branches.each(function(i, e) {
						$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
					});
				}
			}
			
			// add treeview class to activate styles
			this.addClass("treeview");
			
			// prepare branches and find all tree items with child lists
			var branches = this.find("li").prepareBranches(settings);
			
			switch(settings.persist) {
			case "cookie":
				var toggleCallback = settings.toggle;
				settings.toggle = function() {
					serialize();
					if (toggleCallback) {
						toggleCallback.apply(this, arguments);
					}
				};
				deserialize();
				break;
			case "location":
				var current = this.find("a").filter(function() { return this.href == location.href; });
				if ( current.length ) {
					current.addClass("selected").parents("ul, li").add( current.next() ).show();
				}
				break;
			}
			
			branches.applyClasses(settings, toggler);
				
			// if control option is set, create the treecontroller
			if ( settings.control )
				treeController(this, settings.control);
			
			return this.bind("add", function(event, branches) {
				$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable);
				$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
			});
		}
	});
	
	// provide backwards compability
	$.fn.Treeview = $.fn.treeview;
})(jQuery);

我在function toggler()方法中加了入这段代码
 $.ajax({url:'systemAreaSet.do', 
	                    type:'get',
	                    dataType:'html',
	                    data:'method=getChildNode&parentcode='+pub_name+'&s='+s, 
	                    success: function(html){
                        $(html).appendTo("#"+pub_name);
                        }
	                     });

2008年8月03日 17:02
目前还没有答案

相关推荐

    jquery插件库(jquery.treeview插件库)

    jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery....

    jquery treeview demo

    本文将深入探讨jQuery Treeview的使用方法及其在实际应用中的示例。 首先,jQuery Treeview主要用于构建可交互的目录结构或菜单系统,它可以轻松地将HTML列表转换为具有展开/折叠功能的树形视图。这在处理诸如文件...

    jquery TreeView源码实例

    在本文中,我们将深入探讨如何使用jQuery库来创建一个功能丰富的TreeView组件,即树状结构的菜单。jQuery TreeView是一个流行的插件,它允许开发者轻松地将数据组织成层次结构,通常用于展示文件系统、目录结构或者...

    Jquery TreeView结合.NET用户控件的树

    在本文中,我们将深入探讨如何将Jquery TreeView与.NET用户控件相结合,构建一个功能丰富的树形视图。Jquery TreeView是一个流行的JavaScript库,它允许开发者在网页上创建可交互的、层次化的列表。而.NET用户控件则...

    tree控件 jquery treeview

    要使用`jQuery UI Treeview`,首先需要确保已经安装了jQuery和jQuery UI库。通常,这涉及到在HTML文件中添加对应的CDN链接或者将库文件下载到本地并引入。例如: ```html &lt;script src="https://code.jquery....

    jquery treeview树控件.zip

    在使用 jQuery Treeview 时,你需要首先在页面中引入 jQuery 库和 Treeview 插件的 JS 和 CSS 文件。例如: ```html &lt;link rel="stylesheet" href="jquery.treeview.css"&gt; &lt;script src="jquery.js"&gt; &lt;script src="...

    jquery treeview

    标题"jquery treeview"暗示我们将讨论如何使用jQuery Treeview来创建和操作树形视图。这个插件的核心功能包括: 1. **节点操作**:jQuery Treeview支持动态添加、删除和修改节点。你可以通过调用特定的方法来展开或...

    jQuery Treeview异步树实现

    3. **初始化jQuery Treeview**:在DOM准备就绪后,使用jQuery选择器找到这个列表,并调用`treeview()`方法进行初始化: ```javascript $(document).ready(function() { $('#treeview').treeview({ animated: '...

    Jquery TreeView 树形插件

    在项目中使用jQuery TreeView,首先需要确保已引入jQuery库。接着,将`jquery.tree.css`和`jQuery.tree.old.css`这两个CSS文件引入到HTML文档的`&lt;head&gt;`部分,它们分别提供了样式支持和旧版本的样式。同时,将`js`...

    jquery.treeview.zip

    在本篇文章中,我们将深入探讨jQuery Treeview的原理、使用方法及其实战应用。 一、jQuery Treeview基本概念 jQuery Treeview是基于jQuery框架的一个插件,由Peter Hausser开发。它的主要功能是将无序列表(`&lt;ul&gt;`...

    jsontree (jquery.treeview.js) jQuery插件版 treeview1.0

    jsontree (jquery.treeview.js) jQuery插件版 treeview1.0jsontree (jquery.treeview.js) jQuery插件版 treeview1.0jsontree (jquery.treeview.js) jQuery插件版 treeview1.0jsontree (jquery.treeview.js) jQuery...

    Jquery TreeView拖拽树

    《jQuery TreeView 拖拽功能详解》 在Web开发中,树形视图(TreeView)是一种常见的数据展示方式,它能清晰地呈现层级关系。jQuery TreeView是jQuery库的一个扩展,提供了丰富的交互功能,包括拖拽操作。本文将深入...

    jQuery-Treeview.js v1.4 官方版.rar

    在项目中使用jQuery Treeview.js 首先需要引入jQuery库和treeview插件的JS及CSS文件。你可以通过在HTML文件头部添加以下代码来完成这一步: ```html &lt;link rel="stylesheet" href="jquery.treeview.css" type="text...

    动态树的管理程序(基于jQuery Treeview实现)

    在实现的时候也会有很多的方法,例如可以用extjs,jquery treeview等一些js开发包。 但是在开发的时候我种想找个例子来参考下,发现有很多这样的例子,包括extjs和jquery treeview的官方也有,但结合java后台实现的...

    jquery treeview实例

    接着,我们需要引入jQuery库以及jQuery Treeview插件的CSS和JS文件。确保这些资源已正确链接到页面中,例如: ```html &lt;link rel="stylesheet" href="css/jquery.treeview.css"&gt; &lt;script src="js/jquery.js"&gt; ...

    jquery.treeview.rar

    本文将深入探讨jQuery Treeview的使用方法、主要功能以及实际应用。 一、jQuery Treeview概述 jQuery Treeview是基于jQuery的一个开源插件,主要用于将HTML列表转换为可交互的树状结构。通过使用treeview,我们...

    jquery实现的一个treeview效果

    下面我们将深入探讨jQuery Treeview的基本概念、实现原理以及使用方法。 首先,jQuery Treeview是一个插件,它扩展了jQuery的功能,允许开发者将HTML表格或无序列表转换为具有折叠/展开功能的树状视图。这个插件...

    Jquery TreeView支持大数据加载树

    1. **安装与引入**:要使用jQuery TreeView,首先需要在项目中引入jQuery库和TreeView的CSS及JS文件。这可以通过CDN链接或者将文件下载到本地项目中进行引用。 2. **HTML结构**:创建一个无序列表(`&lt;ul&gt;`)作为...

    动态树的管理程序(基于jQuery Treeview实现)-java源码

    总的来说,这个项目展示了如何结合使用jQuery Treeview进行前端展示,以及Struts2、Spring和Hibernate这三大Java EE框架进行后端处理,构建一个动态的、交互式的树状数据管理界面。理解并掌握这些技术对于提升Web...

Global site tag (gtag.js) - Google Analytics