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

一个很常用的JS效果,我想了很久都不会,大家帮忙来看看
我点击一个<input type='text' id='txt1' />,弹出一个<div id='div1'></div>,然后我点击别处,div1就隐藏掉。
"别处"指的是 除了txt1和div1外的其他地方。

我能想到的是 txt1和div1用个<div id='div_wrap'></div>包裹起来,然后对div_wrap用focus和blur做。

大家有好点的办法吗?

先谢谢各位大侠了。

------解决方案--------------------
document绑定click事件,隐藏。
#txt1、#div1绑定click事件,并阻止冒泡即可。

或者document绑定click事件,判断点击源不在#txt1、#div1时,隐藏。

明白不?
------解决方案--------------------
这个用jQuery实现比较简单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#txt1").click(function () {
                $("#div1").show();
            });

            $(document).click(function (e) {
                e = window.event;
                var obj = $(e.srcElement 
------解决方案--------------------
 e.target);
                if ($(obj).is("#txt1,#div1")) {
                    $("#div1").show();
                } else {
                    $("#div1").hide();
                }
            });
        });
    </script>
</head>
<body>
    <input type="text" id="txt1" />
    <div id="div1" style="display: none">
        div1
    </div>
</body>
</html>