2010-08-23 23 views
9

tıkladıktan sonra bir div menüyü gizle Ben de bir açılır menü oluşturmak ettik:jQuery - dış div

sonraki logosu yukarı/aşağı okunu tıklayın http://www.ourbridalsongs.com/new_header/header.php

- menüsü görünür - Ekranda başka bir yere tıkladığınızda ekranın kaybolmasını istiyorum - bazı nedenler takılıp kalıyor ve geriye kaymıyor.

Bunu çözmede yardımcı olabilecek herhangi biri var mı?

İşte benim senaryo:

$(document).ready(function() { 

    $("ul.subnav").parent().append("<span></span>"); 
    $("ul.topnav li span").click(function() { 
     $(this).parent().find("ul.subnav").slideDown('slow').show(); 
     $(this).parent().click(function() {}, function() { 
      $(this).parent().find("ul.subnav").slideUp('slow'); 
     }); 
    }).hover(function() { 
     $(this).addClass("subhover"); 
    }, function() { 
     $(this).removeClass("subhover"); 
    }); 

}); 

Teşekkür !!!

cevap

6

bu kapanacak

$(document).click(function(e){ 
    var myTarget = $(".subnav"); 
    var clicked = e.target.className; 
    if($.trim(myTarget) != '') { 
     if($("." + myTarget) != clicked) { 
      $("ul.subnav").slideUp('slow').hide(); 
     } 
    } 
}); 

kodunuzda bu ön bilgi eklemek senin ul.subnav her yerden belgede tıkladığında.

26

Oldukça basit: Bu menüyü, menü dışındaki her şeye gizleyen bir işlevi bağlama. Bunu yapmak için öğesini body öğesinin her yerine olduğu gibi tıklatın, ayrıca öğesini dinleyiciye menüye ekleyin - sonuncusu yalnızca ilkini çalıştırmayı engeller.

$("body").click(function() { 
    $("#services-container-id").hide(); 
}); 

$("#services-container-id").click(function(e) { 
    e.stopPropagation(); 
}); 
+1

Sana $ yapmak istiyorum düşünüyorum ("body> *"). Tıklayın (... vücudun bütün çocukları almak için. Ben 'body' çocukları almak istemedi – KeatsKelleher

+2

. Ben vücudun kendisini almak istedim. – Crozin

+0

Teşekkürler, bu iyi çalışıyor! Sihirli, body.click etkinliğine ulaşmak için servis konteynerinin tıklanmasını engelleyecek stopPropagation. –