读者的进步速度远大于博客的进步速度。
2010年06月12日TeamWork

1条评论
396 views

IE6下appendChild的一个小问题。

项目中遇到一个小问题,但严重影响了用户体验。

我们先看一个例子:

http://www.cssrain.cn/demo/dialog_jQuery_ui/modal_looseState.html

这是我们项目中采用的jquery ui dialog 做的页面,我把他提取出来,简化一下。

例子中,点击add按钮弹出遮罩层,层中有2个文本框和2个多选框。

现在我们开始测试这个问题:

首先,我们在文本框上输入文本,把多选框也选中。然后点击窗口关闭。

接下来,我们再点击add按钮,重新打开层。

在ie7下,发现刚才所填写的,所选中的一切正常。

在ie6下,文本框的内容还存在,但多选框的选中已经丢失。

 

接下来为了找出原因,我看了下jquery的源码,然后发现jquery使用了appendChild这个方法,

于是我写了个简单的例子来验证是不是它引起的:

http://www.cssrain.cn/demo/dialog_jQuery_ui/b.html

经验证,果真如此,ie6下多选框选中状态在点击appendChild后,丢失了。

暂时解决办法是:

在多选框上添加:onclick="this.defaultChecked=(!this.defaultChecked)"

修改后的例子:

http://www.cssrain.cn/demo/dialog_jQuery_ui/modal.html

 

 

返回顶部