我想在发生另一次点击事件后才激活点击事件。
这是我目前的代码:
$('#mydiv').click(function(){
//some code
$('body').click(function(e){
if($(e.target).is('#mydiv2'))return;
//some code
});
});
这样做的最佳方式是什么?
答案 0 :(得分:2)
您只需在#mydiv2
上禁用并重新启用点击事件(以确保它只连接一次,而不是每次启用它。)
$('#mydiv').click(function () {
$('#mydiv2').off('click').on('click', function () {
alert('#mydiv2 clicked!');
});
alert("mydiv2 activated!");
});
根据您的新评论(关于显示/隐藏第二个div),您可以执行以下操作:
$('#mydiv').click(function () {
$('#mydiv2').off('click').on('click', function () {
alert('#mydiv2 clicked!');
$(this).hide();
}).show();
alert("mydiv2 activated!");
});
由于你只想隐藏并显示第二个div,只有在可见时才能点击,你可以做一些原本想象的更简单的事情。只需连接两个事件并隐藏/显示第二个div:
$('#mydiv').click(function () {
$('#mydiv2').show();
});
$('#mydiv2').on('click', function () {
$(this).hide();
})
当你想点击第一个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
});