博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IE6下jQuery选中select的BUG
阅读量:6615 次
发布时间:2019-06-25

本文共 1196 字,大约阅读时间需要 3 分钟。

       现在公司开发项目都是用jQuery,最近做联动下拉框时遇见个问题:在IE6下报错: “无法设置selected属性。未指明的错误”,而在其他浏览器中都顺利执行。

       定位了下,是调用jQuery的val方法选中时出了问题,在调试时发现一个奇怪的现象,alert后是可以顺利执行的,于是尝试写个setTimeout延迟执行,结果可以解决问题。在网上找了下,原因如下:
    “Note that the error will only occur if you call appendChild, then ask for the select's childNodes, then set the selectedproperty on the newly created option. If you set selected earlier, either before appendChild or after it, there's no problem. And if you omit childNodes, it works. The problem with jQuery is that its .val() function loops over childNodes looking for an option to set, and thus always triggers the bug.
顺便看了下jQuery(1.8.0)源代码:
set: function( elem, value ) {    var values = jQuery.makeArray( value );    jQuery(elem).find("option").each(function() {        this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;    });    if ( !values.length ) {	elem.selectedIndex = -1;    }    return values;}
看来也只能用setTimeout的方式解决了,于是封装了个方法:
setSelectVal:function(sel,value){    if($.browser.msie && $.browser.version=="6.0") { 	setTimeout(function(){ 	     sel.val(value);         },1);     }else { 	 sel.val(value);     } }

转载于:https://www.cnblogs.com/zhengyinhui/archive/2012/10/17/2847992.html

你可能感兴趣的文章
hackermi PHP 404 一句话***
查看>>
我的友情链接
查看>>
我的数字化IT项目管理体系
查看>>
Java面试_冒泡排序
查看>>
【浙大网新图灵通讯】无废话简单高效C#编码规范20100621
查看>>
WCF客户端动态设置WCF服务器主机的地址的方法参考,可以连接多个相同WCF主机的方法...
查看>>
Linux系统进程CPU使用率限制脚本
查看>>
我的友情链接
查看>>
STP理论知识
查看>>
mysql 将时间戳直接转换成日期时间
查看>>
linux笔记--DNS服务配置
查看>>
ubuntu13.04安装低版本的gcc和g++
查看>>
Linux常用命令1
查看>>
JS脚本强制kill掉MongoDB慢查询
查看>>
Bash on windows从14.0升级到ubuntu16.04
查看>>
分布式文件系统之管理DFS复制与基于访问的枚举
查看>>
iOS各种证书
查看>>
VC++编程之第二课笔记——C++的继承封装多态
查看>>
homework week03
查看>>
【Java例题】7.4 文件题1-学生成绩排序
查看>>