0

这是我的jQuery:

$(document).ready(function() {
$('#our_location').click(function(){

    $('#locations').show();

    });

$('#locations a').click(function(){
    $('#f_w').hide();


    var id = $(this).attr('id');

$.ajax({
       type: "POST",
       url: "map_response.php",
       data: ({id: id}),
       success: function(response){
        //alert(response);
        $('#map_n_vilage').html(response);
        $('#map_n_vilage').show();
        $('.villages').show();
       }
   });


    });

});

当我单击链接时,会打开#our_location一个 div #locations#locations当我单击ajax 中的任何锚标记并#map_n_vilage显示 div 时...现在我想要的是,如果我单击除这些 div 之外的任何其他东西,我所有的这些 div 都应该消失。

4

2 回答 2

1

创建一个隐藏 div 的函数:

function hideDivs() {
   $('.villages').hide();
   $('#map_n_vilage').hide();
   $('#locations').hide();
}

您可以将此附加到任何被单击的 div 的新处理程序,并且仅执行hideDivs名称不等于villages, map_n_village, locations。您还可以使用选择器检查它们是否可见:visible

于 2013-03-15T12:50:29.920 回答
0

通常由于事件冒泡,每当点击 html 页面上的任何内容时,body 也会收到一个点击事件。所以是这样的:

$("body").click(function(e) {
  if (e.target.id != "your-main-div-id") {
    //hide whatever div you want to hide
   }
 });

main-div-id 应该是一些控件的 id,如果被点击,你不想隐藏你的 div。您甚至可以删除该部分,但我认为您将需要它。

于 2013-03-15T12:59:27.777 回答