2010-11-29 6 views

Répondre

1

En supposant que vous utilisez la dernière jQuery, v1.4.4:

$(<the div you want hidden>).click(false); //stop click event from bubbling up to the document 
$(document).one('click', function(){ 
    $(<the div you want hidden>).hide(); //which will hide the div 
}); 

En d'autres termes, ce code dit «cacher la div si vous cliquez sur cette page, sauf si vous cliquez sur le div.

Re: bouton à bascule

Ensuite, vous aurez quelque chose comme:

$('button').click(function(){ 
    $('div').toggle(); 
}); 
$('div').click(false); 
$(document).click(function(){ 
    $('div').hide(); 
    //reset the toggle state, e.g. 
    $('button').removeClass('selected'); 
}); 
+0

J'ai un bouton bascule. Toggling sur lequel va montrer et cacher la div. En dehors de cela, je veux cacher la div en cliquant n'importe où en dehors de la div. J'essaie de créer quelque chose comme le bouton Twitter "Connexion" sur twitter.com – ptamzz

+0

J'ai mis à jour ma réponse pour aider avec ça, alors. –

+0

Pouvez-vous m'aider à réinitialiser l'état de basculement. Supposons qu'après avoir cliqué sur un élément, lorsque je clique sur un autre élément, il devrait réinitialiser l'état de bascule à l'état initial. Merci :) – ptamzz

6
$('#mydiv').click(function(e) { e.stopImmediatePropagation(); }); 
$(document.body).one("click", function() { 
    $('#mydiv').hide(); 
}); 

Depuis mydiv est aussi un enfant de l'élément body, vous ne voulez pas que lorsque vous cliquez sur cet élément, l'élément serait disparaitra.
Donc quand les gens cliquent sur le mydiv, vous voulez qu'il arrête de bouillonner jusqu'à l'élément body, c'est pourquoi vous devez d'abord enregistrer un événement click sur votre mydiv, et lui dire d'arrêter de bouillonner.

+0

Euh, '.one()' prend dans un 'eventType' comme argument. Ici, quel événement vous engagez une fois? –

+0

Fixé. Liaison bien sûr à l'événement click. – Gidon

Questions connexes