11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'affiche un bloc avec le code suivant :
	$('.box-info').hide();
	$('.open-link').bind('click', function() {
		$('.box-info').toggle();
		return false;
	});

Je referme ce bloc au clic sur .open-link
J'aimerais pouvoir le refermer en cliquant n'importe où sur la page, est-ce possible avec toggle ?

Merci d'avance.
Bonjour,

Merci pour ta raiponse.

J'ai bien essaiyé mais un clic sur box-info ouvert ferme ce bloc, alors que ça ne devrait pas (il y a un formulaire à remplir, on doit pouvoir placer le curseur ou on veux en cliquant).
Tu peux aussi stocker $('box-info') dans une variable.
Tu n'as qu'a ecouter les cliques sur le document et si la cible de du clique est ton element ".open-link", montre/cache ton element ".box-info". De cet maniere tu n'attache qu'un seul evenement au document

Voici le code que j'utiliserai:


    var boxInfo = $('.box-info').hide();
    $(document).click(function(e) {
        var target = e.target,
             className = target ? target.className : '';
        if (className === 'open-link') {
            boxInfo.toggle();
        } else if (className !== 'box-info'){
            boxInfo.hide();
        }
    });


A adapter selon tes besoins

edit: modification par rapport au post precedent
Modifié par martint (22 May 2012 - 10:58)
Bonjour,

Ca ne marche pas, lorsque je clique sur le bloc affiché, il se ferme aussitot.
Je continu mes recherches.
Peux tu poster l'html correspondant? Si ton element "open-link" contient l'element "box-info" c'est normal, inverse juste le if et le else dans mon code pour d'abord tester contre le clique sur le "box-info" avant "open-link"