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/p/2791475.html