使用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