如何在特定div上调用“onclick”时禁用window.onclick事件?

时间:2011-12-18 13:00:00

标签: javascript

我有下拉菜单的数量,在这些特定div下方的onClick事件被调用,我也设置window.onclick以收回这些下拉列表(当用户点击其他地方时,它们处于活动状态。

现在,当我点击一个div(有一个dropDown)时,下拉菜单会被激活(菜单被创建)并同时收回(因为window.click

菜单正在被创建并同时被销毁!,任何解决方法来执行window.onclick如果点击的元素没有打开带有下拉列表的div?

愚蠢的问题,来自初学者...... 提前谢谢!!

这是一个示例代码!! .. div上的onclick应该带出菜单 - 而window.onclick应该收回菜单(所有菜单都被展开)

<html>
    <style type="text/css">
    .bar{
    width: 30px;
    height: 30px;
    background-color: black;
    display: none;
    }
    </style>
    <script type="text/javascript" >
    function fire(){
    document.getElementById("bar").style.display="block";
    }
    window.onclick=unfire;
    function unfire(){
    if(document.getElementById("bar").style.display== "block")
    document.getElementById("bar").style.display="none";
    }
    </script>
    <input type="button" value="foo" onclick="fire()">
    <div id="bar" class="bar"></div>
    </html>

编辑:添加了代码示例

3 个答案:

答案 0 :(得分:1)

function doSomething() {
   if (this.id == "myId") return;
   // else do Something
}

答案 1 :(得分:1)

您可以调用e.stopPropagation()(浏览器)或e.cancelBubble = true(IE)来阻止事件向上传播。

答案 2 :(得分:0)

您想要在div上触发onmousedown