当前位置: 代码迷 >> Web前端 >> jquery ie6 ,七 8 不兼容
  详细解决方案

jquery ie6 ,七 8 不兼容

热度:496   发布时间:2013-01-06 15:44:47.0
jquery ie6 ,7 8 不兼容

?

ie6,7 和 ie8 解析后台传过来的相同 html的时候有些不同。导致用prev, next,find,parent等出现找不到对象的问题。

如下?

?

<ul>

<li class='nobd'>产品管理

</li>

<ul>

<li>

<a href='evaluateAction.do?operation=6&src=menu'>产品评论管理</a>

</li>

</ul>

<li class='nobd'>花店管理

</li>

<ul>

<li>

<a href='tblShopQueryAction.do?src=menu'>查看花店</a>

</li>

<li>

<a href='tblShopAction.do?operation=1&type=cancel&src=menu'>新增花店</a>

</li>

</ul>

。。。

。。。

。。。后面很多这种结构数据

</ul>

?this.tree.find("ul");得到的就是上面的 最外层的UL 下的 li 和 ul.

?现在 需要做的是 ,获得 所有的 最外层UL 下的属性show ='true'的 ul 节点的上一节点(pre,非父节点,例如:<li class='nobd'>产品管理</li>);

?参考代码如下:

?alert("IE 6"+this.tree.find("ul ul[show='true']").html());?

?这个可以获得?

?

?

但是?this.tree.find("ul ul[show='true']")。prev("li")就是null.但是在ie8 或firefox 等 可以出来内容

?

?

?

if($.browser.msie&&($.browser.version == "6.0") || $.browser.msie&&($.browser.version == "7.0")){

? ?$('.nobd').addClass("folder");//也是因为如果按照下面的写法获得不到li,本质上 $('.nodb').就可以获得li

?} else {

? ??this.find("ul").prev("li").addClass("folder");?

?}

?

?

?if($.browser.msie&&($.browser.version == "6.0") || $.browser.msie&&($.browser.version == "7.0")){

? if($(this).find("ul").attr("show")=="true"){

$(this).find("ul").attr("show","false");

}else{

$(this).find("ul").attr("show","true");

}

} else {

if($(this).next("ul").attr("show")=="true"){

$(this).next("ul").attr("show","false");

}else{

$(this).next("ul").attr("show","true");

}

}

?

?

?

?

/*

* 初始化菜单展开状态,以及分叉节点的样式

*/

if($.browser.msie&&($.browser.version == "6.0") || $.browser.msie&&($.browser.version == "7.0")){

this.tree.find("ul ul").hide(); /* 隐藏所有子级菜单 */

this.tree.find("ul ul").parent().removeClass("open"); /* 移除所有子级菜单父节点的 open 样式 */

this.tree.find("ul ul[show='true']").show(); /* 显示 show 属性为 true 的子级菜单 */

this.tree.find("ul ul[show='true']").parent().addClass("open"); /* 添加 show 属性为 true 的子级菜单父节点的 open 样式 */

} else {

this.tree.find("ul ul").hide(); /* 隐藏所有子级菜单 */

this.tree.find("ul ul").prev("li").removeClass("open"); /* 移除所有子级菜单父节点的 open 样式 */

this.tree.find("ul ul[show='true']").show(); /* 显示 show 属性为 true 的子级菜单 */

this.tree.find("ul ul[show='true']").prev("li").addClass("open"); /* 添加 show 属性为 true 的子级菜单父节点的 open 样式 */

}

  相关解决方案