转自:http://blog.youkuaiyun.com/huigoo/article/details/7491586
由于下拉列表涉及到级联操作,所以准备将option的值通过$('el').html()设置进去,然后设置相应的值,在IE8、FF、Chrome下均没错误,IE6.0出现无法设置问题,报错"无法设置selected属性。无效索引。",如下图

遂开始在IE6下艰苦调试,发现只需要在设值之前打印一个alert,js就不出现错误
- $(document).ready(function(){
- var _var = "<option value='test1'>test1</option>"
- _var += "<option value='test2'>test2</option>"
- _var += "<option value='test3'>test3</option>"
- $('#test').html(_var)
- alert'test')//如果这里的alert去掉,这报"无法设置selected属性。无效索引。"
- $('#test').val('test2')
- })
由此中窥知,莫非$('el').html(xxxx)有延时的???最后通过设置暂停来解决了,代码如下
- $(document).ready(function(){
- var _var = "<option value='test1'>test1</option>"
- _var += "<option value='test2'>test2</option>"
- _var += "<option value='test3'>test3</option>"
- $('#test').html(_var)
- setTimeout("testSelected()",1) ;
- })
- testSelected = function(){
- $('#test').val('test2')
- }
本文解决了一个在Internet Explorer 6浏览器中使用jQuery动态设置HTML下拉框值时遇到的问题。当使用`$('el').html()`方法后立即尝试设置下拉框的默认选中值时,会遇到“无法设置selected属性。无效索引”的错误。文章提供了一种通过使用`setTimeout`来延迟设置选中值的方法来规避此问题。

被折叠的 条评论
为什么被折叠?



