jquery treeview插件在ie6上的bug修正

使用jquery 的treeview插件,在ie6上运行时,如果树对象包含在table中,则树的显示行为不正常,本来应该打开的节点,显示为关闭。

经过问题查找,发现是由于ie6不支持css搜索引起的,代码在treeview的插件脚本中,修正如下:

查找applyClasses方法,在语句 if (!settings.prerendered) { 判断后,// create hitarea if not present注释之前的代码,如下:

// 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 if not present

修改为:

				// handle closed ones first
				if($.browser.msie&&($.browser.version == "6.0")&&!$.support.style){
					var hasHidenUl = false;
					$(this).find("ul").each(function(){
						if($(this).css("display")!="block"){
							$(this).parent().addClass(CLASSES.expandable)
							.replaceClass(CLASSES.last, CLASSES.lastExpandable);
						}else{
							$(this).parent().addClass(CLASSES.collapsable)
							.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
						}
					});
				}else{
					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 if not present


你可能感兴趣的:(javascript)