用jQuery解决弹出层的问题

在BS 项目中 经常需要用到这种弹出层。
做这种弹出层一般都会遇到下面几个问题:
0,弹出层必须定义在input的下边显示。
1,点击input弹出div层。
2,点击div层外面任何地方,关闭div层。
3,ie6下,div层与下拉框的优先级问题。

下面这个例子就是解决这些问题的,大家可以参考参考,有什么更好的解决方案,请留言。

超级简单版 演示:
http://cssrain.cn/demo/popDiv/easyPopDiv.html

实例版 演示:
http://cssrain.cn/demo/popDiv/popDiv.html

下载:
http://cssrain.cn/demo/popDiv/popDiv.rar

 

此弹出框特点:
1,弹出层出现在 文本框 下面.
2,点击弹出层内部 不关闭层,点击外面关闭弹出层.
3,ie6依然能遮住下拉框.

当时遇到的问题以及解决方案 :
1,获取文本框的高度,当初用的.height(),结果发现有问题,border等都没算进去,后来改用.outerHeight(true)解决。
2,阻止事件冒泡,当初用的return false;结果弄的多选框不能选了,
因为return false包括e.stopPropagation()和e.preventdefault(),e.preventdefault()会阻止元素的默认动作,
所以多选框不能选中了。改用e.stopPropagation()后,一切正常。
3,$("body")和$(document)的区别,因为body的高度未知,所以导致click()事件无效,改为$(document) 解决。
4,ie6下,层与下拉框的问题,采用jquery.bigframe插件解决。

本篇文章来源于 cssrain.cn 原文链接:http://www.cssrain.cn/article.asp?id=1317

posted @ 2009-04-13 09:51  scgw  阅读(1310)  评论(1编辑  收藏  举报