Autor | Zpráva | ||
---|---|---|---|
LenkaJR Profil * |
#1 · Zasláno: 11. 1. 2012, 20:56:44
ahoj,
mám vysouvací nabídku přes tento kód: <script type="text/javascript"> $(document).ready(function(){ $('#menuodkaz').toggle(function(e){ e.preventDefault(); $('#menu').fadeIn(300); }, function(e){ e.preventDefault(); $('#menu').fadeOut(300); }) }); </script> Po kliknutí na div "menuodkaz" vyjede nabídka v divu "menu". Nabídka lze zavřít pouze opětovným kliknutím na "menuodkaz". Potřeboval bych ale udělat, aby se "menu" zavřelo ikdyž kliknu kdekoliv mimo. dík Lenka |
||
Suta Profil |
#2 · Zasláno: 11. 1. 2012, 22:57:18 · Upravil/a: Suta
Zkus takto (metoda contains vrací true, pokud je element uvnitř jiného elementu). Po otevření menu tedy navážeš událost mousedown na dokument a kontroluješ, jestli je target, na nějž bylo kliknuto, uvnitř tvého menu (nebo se jedná o menu samotné). Pokud není, bylo kliknuto mimo menu a můžeš jej skrýt. Mousedown můžeš vyměnit za click.
<script type="text/javascript"> $(document).ready(function(){ $('#menuodkaz').toggle(function(e){ e.preventDefault(); $('#menu').fadeIn(300); $(document.on("mousedown.vysouvaciNabidka", function(e){ if(!($.contains(document.getElementById("menu"),e.target) || document.getElementById("menu") == e.target)) { $('#menu').fadeOut(300); $(document.off("mousedown.vysouvaciNabidka"); } } }, function(e){ e.preventDefault(); $('#menu').fadeOut(300); }) }); </script> |
||
Časová prodleva: 11 let
|
0