当我双击将在单击时隐藏的特定元素时,双击绑定到父元素或兄弟元素

时间:2015-06-16 10:40:50

标签: javascript jquery html css

我已经以图层格式一个接一个地声明了两个div,这意味着" DIV2(#myDiv2)将放在DIV1(#myDiv1)上。单击DIV2,必须隐藏它。它工作正常。但是,当我双击DIV2时,DIV2通过首次单击该双击事件获得隐藏,然后双击事件也绑定到DIV1。我不知道它是怎么发生的。 我的要求是当我双击DIV2时,DIV2必须隐藏然后单击事件只需要为DIV1绑定。



actionBarDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "ToolbarNavigationClickListener", Toast.LENGTH_SHORT).show();
        }
    });

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




2 个答案:

答案 0 :(得分:2)

dblclick事件对click事件进行排队,并检查目标元素。隐藏的可见性会干扰,并且会在目标元素上触发第二次立即点击。

一种解决方案是在隐藏第二个dblclick后解除并绑定div事件并超时。

JSFiddle

$("#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();
}

答案 1 :(得分:0)

我认为你把点击事件搞糊涂了,试试这个:

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