日期:2014-05-16  浏览次数:20335 次

在面板外点击关闭面板
功能要求:
在面板外点击关闭面板
比如现在有个打开的DIV,只要在DIV外点击,DIV就关闭,即消失。

求各位大大指教!

------解决方案--------------------
HTML code
<script type="text/javascript">
function handle(e){
    e=window.event||e;
    var tag=e.srcElement||e.target;
    if(tag.id!='testdiv'){
        document.getElementById("testdiv").style.display='none';
    }
}
window.onload=function(){
    document.body.onclick=handle;
}
</script>
<div id="testdiv" style="width:600px;height:300px;border:1px solid #bfbfbf"></div>

------解决方案--------------------
探讨

HTML code
<script type="text/javascript">
function handle(e){
e=window.event||e;
var tag=e.srcElement||e.target;
if(tag.id!='testdiv'){
document.getElementById("testdiv").style.d……

------解决方案--------------------
我试了一楼的代码,在层的右外侧点击,可以让层隐藏,但是在层的下方点击,没反应,使用谷哥和火狐浏览器进行的测试
探讨

HTML code
<script type="text/javascript">
function handle(e){
e=window.event||e;
var tag=e.srcElement||e.target;
if(tag.id!='testdiv'){
document.getElementById("testdiv").style.d……

------解决方案--------------------
判断下鼠标点击的对象是否在面板中就好,不再就隐藏

JScript code
    //扩展非IE浏览器下的contains方法
    if (window.Element) Element.prototype.contains = function (o) { if (this == o) return true; while (o = o.parentNode) if (o == this) return true; return false; }
    var popID = 'xxxx';///////面板总容器ID
    document.onclick = function (e) {
        e = e || window.event;
        var o = e.srcElement || o.target;
        if (!document.getElementById(popID).contains(o)) //如果点击的对象不包含在面板中则隐藏
        document.getElementById(popID).style.display = 'none';
    }

------解决方案--------------------
思路不难,就是你用个大的DIV 包住你要关闭的DIV 当你点击小的DIV外面时候会调用大的DIV的单击事件,去判断小的DIV是否是显示的,如果是显示的就关闭它!