我有一个包含div,它本身就是一个按钮......
点击后,我设置了扩展并显示更多信息,同时在右上方显示一个关闭按钮...
现在,当我点击关闭按钮时,关闭功能执行,而且div的onclick打开,所以最终的结果是,嗯...什么都没发生......
大声笑...
小提琴的例子也不起作用,我的智慧即将结束......
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)
| 归档时间: |
|
| 查看次数: |
2980 次 |
| 最近记录: |