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が開きます。#locationsajaxのアンカータグをクリックすると、 #map_n_vilagedivが表示されます...これらのdiv以外のものをクリックすると、これらのdivがすべて消えるだけです。

4

2 に答える 2

1

div を非表示にする関数を作成します。

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

これを、クリックされた任意の div の新しいハンドラーにアタッチして、名前が, ,hideDivsと等しくない場合にのみ実行することができます。セレクターを使用して、それらが表示されているかどうかを確認することもできます。villagesmap_n_villagelocations:visible

于 2013-03-15T12:50:29.920 に答える
0

通常、イベント バブリングが原因で、html ページ上の何かがクリックされるたびに、ボディもクリック イベントを取得します。だから、このようなもの:

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

main-div-id は、クリックされた場合に div を非表示にしたくないコントロールの ID にする必要があります。その部分を削除することもできますが、あなたの場合はそれが必要になると思います。

于 2013-03-15T12:59:27.777 に答える