ie6 select不兼容处理(转)

 

jQuery针峰相对IE6

以下是个人在使用jQuery在开发时,与ie6有关的bug

 

1:关于select下拉框的动态赋值并选中其中某一项

在ie6中,如果你动态给select赋值并选中时,如下代码:

$('#selectId').empty().html('<option value="001">collonn</option><option value="002">joanna</option>').val('002')

alert('following');

这样写,最终的结果是:

(1)会选中valu='002'的选项,但ie6会报错(浏览器左下角会出现一个黄色报警)

(2)alert('following')这一行是不会执行的,并且,这一行以下的所有js都不会执行

 

解决方法:

应该这样写:

$('#selectId').empty().html('<option value="001">collonn</option><option value="002">joanna</option>');

setTimeout(function(){

   $('#selectId').val('002');

},10);

问题解决,但不知道根本原因,可能是ie6还没有来得及给select做必要的处理吧

 

2:关于table的显示与隐藏样式

如果隐藏就用:$('#table').css('display','none');

如果显示就用:$('#table').css('display',''); 为空白就行

如果用('display','block'),IE7=6正常,但firefox有问题。

如果用('display','table')或着('display','table-row')或着('display','table-cell'),IE6就会有问题,firefox正常

 

IE6 Bug之select动态赋值

06

问题:使用ie测试时发现一处脚本报错,经过alert排查出引发问题的代码。此代码在其他浏览器下正常,但是ie6下报错。

排查:与技术沟通确认代码功能是将select最新服务器设为选中状态。服务器列表是动态生成的。

解决直接上代码:

        if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style) {
            window.setTimeout(function(){//ie6需要稍微延迟  
                groupSelect.val(max_groupId);  
            }, 0);  
        }else{
            groupSelect.val(max_groupId)
        }

原因:因为在往select中动态添加option时,浏览器执行javascript设置select的属性的时候浏览器可能还没将它们渲染到页面中(ie6),因此使用setTimeout可以使浏览器渲染线程先将元素渲染到页面中区,再使用javascript线程执行改变它们属性的操作。

转载于:https://www.cnblogs.com/ivan0626/archive/2012/11/27/2791475.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值