Div点击对方?

Abh*_*hek 7 javascript

我有一个包含div,它本身就是一个按钮......

点击后,我设置了扩展并显示更多信息,同时在右上方显示一个关闭按钮...

现在,当我点击关闭按钮时,关闭功能执行,而且div的onclick打开,所以最终的结果是,嗯...什么都没发生......

大声笑...

小提琴的例子也不起作用,我的智慧即将结束......

http://jsfiddle.net/VeyeY/5/

Dan*_*nne 12

您可以从onclick返回false以关闭div.这将确保不传播click事件.

另一种解决方案是呼叫preventDefault()stopPropagation()事件本身.这也将确保事件不会继续.

编辑:

在发生的所有事件中(onclick,onchange,onmouseover等),总会有一个事件变量,你可以忽略它,或者从中提取信息.在您的示例中,我认为使用事件变量的最简单方法是执行以下操作:

<div id="inner" onclick="toggle(false); event.preventDefault(); event.stopPropagation();">
Run Code Online (Sandbox Code Playgroud)

现在这看起来有点难看,你真的不想在html标记中处理这个,所以另一个选择是将事件变量传递给你的函数,如下所示:

<div id="inner" onclick="toggle(event, false)">
Run Code Online (Sandbox Code Playgroud)

然后在javascript中:

function toggle(event, x){
    // Do your thing

    event.preventDefault();
    event.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)

您可以使用事件变量执行许多操作.例如,您可以检查发起事件的节点,而不是将true或false传递给您的函数:

if(event.originalTarget.id == "inner"){
    // Inner was clicked
}else if(event.originalTarget.id == "outer"){
    // Outer was clicked
}
Run Code Online (Sandbox Code Playgroud)