(原生js)点击body隐藏div,但若点击的是指定的位置则不隐藏

仿大众点评网的切换城市:
http://www.dianping.com/shijiazhuang
重点:取消事件冒泡

<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>模拟select控件</title>
<style>
html,body{height:100%;overflow:hidden;}
body,div,form,h2,ul,li{margin:0;padding:0;}
ul{list-style-type:none;}
body{background:#23384e;font:12px/1.5 5fae8f6f96c59ed1;}
#search,#search form,#search .box,#search .select,#search /*a{background:url(img/search.jpg) no-repeat;}*/
#search,#search .box,#search form{height:34px;}
#search{position:relative;width:350px;margin:10px auto;}
#search .box{background-position:right 0;}
#search form{background-repeat:repeat-x;background-position:0 -34px;margin:0 20px 0 40px;}
#search .select{float:left;color:#fff;width:190px;height:22px;cursor:pointer;margin-top:4px;line-height:22px;padding-left:10px;background-position:0 -68px;}
#search a{width:80px;height:24px;color:#333;letter-spacing:4px;line-height:22px;text-align:center;text-decoration:none;background-position:0 -90px;margin:4px 0 0 10px;}
#search a:hover{color:#f60;background-position:-80px -90px;}
#search .sub{position:absolute;top:26px;left:40px;background: white;width:198px;border:1px solid #fff;display:none;}
#search .sub li{height:25px;line-height:24px;cursor:pointer;padding-left:0px;margin-bottom:-1px;border-bottom:1px dotted #fff;}
#search .sub li.hover{background:#8b8b8b;}
.show {
    display: none;
    text-align: center;
}
</style>
<script type="text/javascript">
window.onload = function ()
{
    var oSelect = document.getElementsByTagName("span")[0];
    var oSub = document.getElementsByTagName("ul")[0];
    var aLi = oSub.getElementsByTagName("a");
    var z = document.getElementsByClassName("show")[0];
    var i = 0;

    z.onclick = function (event)
    {
        var style = this.style;
        style.display = "block";
        //阻止事件冒泡
        (event || window.event).cancelBubble = true
    };



    oSelect.onclick = function (event)
    {
        var style = z.style;
        style.display = style.display == "block" ? "none" : "block";
        //阻止事件冒泡
        (event || window.event).cancelBubble = true
    };

    for (i = 0; i < aLi.length; i++)
    {
        //鼠标划过
        aLi[i].onmouseover = function ()
        {
            this.className = "hover"
        };
        //鼠标离开
        aLi[i].onmouseout = function ()
        {
            this.className = "";
        };
        //鼠标点击
        aLi[i].onclick = function ()
        {
            oSelect.innerHTML = this.innerHTML;
            z.style.display = 'none';   
            //阻止事件冒泡
        (event || window.event).cancelBubble = true
        }
    }

    document.onclick = function ()
    {
        z.style.display = "none";   
    };
};
</script>
</head>
<body>
<div id="search">
    <div class="box">
        <form>
            <span class="select">魔兽世界(国服)</span>        
        </form>
    </div>
    <div class="show">
        <ul class="sub" style="display: block;">
        <li class=""><a>地下城与勇士</a></li>
        <li class=""><a>魔兽世界(国服)</li>
        <li class=""><a>魔兽世界(台服)</a></li>
        <li class=""><a>热血江湖</a></li>
        <li class=""><a>神鬼传奇</a></li>
        <li class=""><a>大话西游II</a></li>
        <li class=""><a>QQ幻想世界</a></li>
        <div class="zuZHi">
            sqf
        </div>
    </ul>

    </div>

</div>



    </body></html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值