Autor Zpráva
LenkaJR
Profil *
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
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>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: