jQuery - 在另一个单击事件中和之后单击事件

时间:2014-05-28 08:20:55

标签: jquery jquery-click-event

我想在发生另一次点击事件后才激活点击事件。

这是我目前的代码:

$('#mydiv').click(function(){
    //some code
    $('body').click(function(e){
      if($(e.target).is('#mydiv2'))return;
          //some code
    });
 });

更新:

  • 我有2个Div:#mydiv和#mydiv2
  • 第二个Div(#mydiv2)被隐藏。
  • 当我点击#mydiv时,我想要显示#mydiv2。
  • 当我点击页面上的任何其他位置时,我想隐藏#mydiv2

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

您只需在#mydiv2上禁用并重新启用点击事件(以确保它只连接一次,而不是每次启用它。)

jsFiddle:http://jsfiddle.net/TrueBlueAussie/W8rDM/

$('#mydiv').click(function () {
    $('#mydiv2').off('click').on('click', function () {
        alert('#mydiv2 clicked!');
    });
    alert("mydiv2 activated!");
});

更新:http://jsfiddle.net/TrueBlueAussie/W8rDM/1/

根据您的新评论(关于显示/隐藏第二个div),您可以执行以下操作:

$('#mydiv').click(function () {
    $('#mydiv2').off('click').on('click', function () {
        alert('#mydiv2 clicked!');
        $(this).hide();
    }).show();
    alert("mydiv2 activated!");
});

由于你只想隐藏并显示第二个div,只有在可见时才能点击,你可以做一些原本想象的更简单的事情。只需连接两个事件并隐藏/显示第二个div:

简化:http://jsfiddle.net/TrueBlueAussie/W8rDM/2/

$('#mydiv').click(function () {
    $('#mydiv2').show();
});

$('#mydiv2').on('click', function () {
    $(this).hide();
})

上次尝试:http://jsfiddle.net/TrueBlueAussie/W8rDM/3/

当你想点击第一个div时显示它并在你点击任何地方时隐藏第二个div,这应该可以解决问题:

$('#mydiv').click(function (e) {
    $('#mydiv2').show();
    e.stopPropagation();
});

$(document).on('click', function () {
    $('#mydiv2').hide();
})

答案 1 :(得分:0)

$('#mydiv').click(function(e){
    e.stopPropagation();
    // code for mydiv
});
$('body').click(function(e){
   // code for body
});