Javascript 当我双击某个元素时,双击将绑定到父元素或同级元素,该元素将在单击时隐藏

Javascript 当我双击某个元素时,双击将绑定到父元素或同级元素,该元素将在单击时隐藏,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我已经以层格式一个接一个地声明了两个div,这意味着“DIV2(#myDiv2)将放置在DIV1(#myDiv1)之上”。对于单次单击DIV2,它必须是隐藏的。它工作正常。但当我双击DIV2时,DIV2会在第一次单击该双击事件时被隐藏,然后双击事件也会绑定到DIV1。我不知道这是如何发生的。 我的要求是,当我双击DIV2时,DIV2必须隐藏,然后单击事件只需要为DIV1绑定 $(“#myDiv2”)。单击(函数(e){ $(this.css(“显示”、“无”); }); $(“#myDiv1”

我已经以层格式一个接一个地声明了两个div,这意味着“DIV2(#myDiv2)将放置在DIV1(#myDiv1)之上”。对于单次单击DIV2,它必须是隐藏的。它工作正常。但当我双击DIV2时,DIV2会在第一次单击该双击事件时被隐藏,然后双击事件也会绑定到DIV1。我不知道这是如何发生的。 我的要求是,当我双击DIV2时,DIV2必须隐藏,然后单击事件只需要为DIV1绑定

$(“#myDiv2”)。单击(函数(e){
$(this.css(“显示”、“无”);
});
$(“#myDiv1”).dblclick(函数(e){
警报(“第1分区双击”);
});



我是Div 2
我想你对点击事件感到困惑,试试这个:

$("#myDiv2").dblclick(function(e) {
  $(this).css("display", "none");
});
$("#myDiv1").click(function(e) {
  alert("DIV 1 double clicked");
});

dblclick
事件将
click
事件排入队列,并检查目标元素。可见性隐藏干扰,第二次立即单击将触发目标元素

一种解决方案是,在隐藏第二个
div
之后,取消绑定并绑定
dblclick
事件,并使其超时


不,问题是:你第一次点击
#myDiv2
,它就隐藏了。一切正常。然后你在屏幕的同一点(现在在
#myDiv1
中)再次点击(在很短的时间后)和
dblclick
for
#myDiv1
被触发,即使你只点击了一次
#myDiv1
。我刚刚将你的源代码复制到jsbin中,我似乎找不到那个bug…尝试重新加载或其他方法,我发现我的浏览器缓存会把事情搞砸,即使它们工作正常…1.这不是我的错源代码。2.我确实在你的示例中看到了这个错误。我使用Opera 30.0。你自己一个人,孩子:(谢谢。已经更新了答案。暂停当前的点击队列需要超时。是的。我提到了它作为一个解决方案。不是唯一的:)@Moniecorleone我已经知道双击的这种解决方法。有人能解释一下这种双击行为背后的确切原因吗?@JohnR我唯一的想法是:jQuery保存最后一次单击的坐标。如果第二次单击是在短时间之后,并且大致在屏幕的同一点上,那么它就是双击。什么双击的t元素仅在第二次单击时由第二次单击的
事件确定。目标
$("#myDiv1").on('dblclick', runOnDoubleClick);

$("#myDiv2").on('click', function(e) {
    $(this).hide();   
    $("#myDiv1").off('dblclick');
    setTimeout(function() {
        $("#myDiv1").on('dblclick', runOnDoubleClick)
    }, 300);
});

function runOnDoubleClick()
{
    alert("DIV 1 double clicked");
    $("#myDiv2").show();
}