2014-05-09 4 views
1

Je ne suis pas sûr de savoir comment faire cela depuis que je suis un débutant. J'ai besoin d'un menu dropdown .dmenu lorsque vous cliquez sur un bouton .dropB et besoin de .dmenu à hide dès que le bouton est cliqué ou cliqué n'importe où en dehors du bouton.Cacher un bouton sur cliquez dehors

$('.dropB').click(function(){ 
     $('.dmenu').toggle(); 
}) 

Mais cela ne lui permet de se cacher quand on clique dessus partout en dehors de la .dropB. S'il vous plaît toute aide serait appréciée.

+0

peut vous définir « cliquait en dehors' .dropB' pouvez-vous partager le balisage peut-être créer un violon à http://jsfiddle.net – caramba

Répondre

3

Vous pouvez utiliser:

$('.dropB').click(function (e) { 
    e.stopPropagation(); 
    $('.dmenu').toggle(); 
}) 

$(document).click(function (e) { 
    if (!$(e.target).is('.dmenu')) { 
     $('.dmenu').hide(); 
    } 
}) 

Fiddle Demo

2

Utilisez la délégation pour gérer les clics sur le document. Vérifiez la cible, si elle correspond à votre bouton puis toggle le menu. Si non, alors hide le menu.

Demo: http://jsfiddle.net/abhitalks/ztxa2/

$(document).on("click", function(e) { 
    var $target = $(e.target); 
    if ($target.hasClass("dropB")) { 
     $('.dmenu').toggle(); 
    } else { 
     if (! $target.hasClass("dmenu")) { 
      $('.dmenu').hide(); 
     } 
    } 
}) 

Vous pouvez également vérifier si la cible est le menu lui-même, afin de ne pas se cacher quand on clique dessus.

+0

? pouvez-vous faire un jsfiddle s'il vous plaît – HackerManiac

+0

[on] (http://api.jquery.com/on/)? – Liam

+0

Fixe @Liam.Ancienne habitude! – Abhitalks

Questions connexes