迪夫互相点击?

问题描述

| 我有一个包含div,它本身就充当一个按钮... 当单击时,我将其设置为展开并显示更多信息,同时在右上角显示关闭按钮... 现在,当我单击关闭按钮时,将执行关闭功能,而且还会打开div的onclick,因此最终结果是……什么都没有发生…… 大声笑... 小提琴的例子也不起作用,而且我快要崩溃了。 http://jsfiddle.net/VeyeY/5/     

解决方法

        您可以从onclick返回false来关闭div。这样可以确保click事件不会传播。 另一种解决方案是在事件本身上调用“ 0”和“ 1”。这也将确保事件不会继续进行。 编辑: 在所有发生的事件(onclick,onchange,onmouseover等)中,总是存在一个事件变量,您可以忽略该事件变量,或者从中提取信息。在您的示例中,我认为使用事件变量的最简单方法是执行以下操作:
<div id=\"inner\" onclick=\"toggle(false); event.preventDefault(); event.stopPropagation();\">
现在看起来有点难看,您真的不想在html标记中处理此问题,因此另一种选择是将事件变量传递给函数,如下所示:
<div id=\"inner\" onclick=\"toggle(event,false)\">
然后在javascript中:
function toggle(event,x){
    // Do your thing

    event.preventDefault();
    event.stopPropagation();
}
事件变量可以做很多事情。例如,您可以像下面那样检查引发事件的节点,而不是将true或false传递给函数:
if(event.originalTarget.id == \"inner\"){
    // Inner was clicked
}else if(event.originalTarget.id == \"outer\"){
    // Outer was clicked
}
    ,        更新 您可以: 在
#inner
上放置一个
margin-top
,这样用户就不会同时单击它们(或从ѭ8edge的上边缘偏移某种距离)。 (更新:拒绝,CSS解决方案) 或者,对每个ѭ9分别触发不同的功能,例如ѭ10和ѭ11。这样,您甚至可以从另一个呼叫一个。 (更新:在这里摆弄,导致解决方案2a。) 2a。另一种方法是只为ѭ8触发事件?如果单击
#inner
,事件将冒泡,而ѭ8fire将触发切换,如下所示。 或者,根据需要禁用一个或另一个的单击事件。 (更新:请参阅@DanneMarne的解决方案。) 或者,在每个对象上设置一个自定义属性,例如ѭ15,它将记录每个对象的当前状态。 (更新:没关系,不是很有帮助)。 更新:因此,经过一些测试,我将使用2a。     ,        显示后可以禁用DIV单击功能。您可以在按下关闭按钮时重新启用该单击功能。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...