• 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线程执行改变它们属性的操作。

  • 相关阅读:
    linux常用命令:
    解决css添加padding后元素变长的问题
    Hbase常用命令
    集群部署的三种方式(hadoop集群部署三种方式)
    linux编译安装指定依赖的软件包
    vue使用Element隐藏侧边栏进度条
    css相对于父容器,固定放在底部并撑满
    java中23种设计模式
    adb remount'的作用是什么?在什么情况下有用?
    java常用http请求库
  • 原文地址:https://www.cnblogs.com/ivan0626/p/2791475.html
Copyright © 2020-2023  润新知