Jquery: obtenir un clic de souris si dans un div ou non

J'ai cette page HTML

<html> <body> <div>a</div> <div>b</div> <div>c</div> <div>d</div> <div id='in_or_out'>e</div> <div>f</div> </body> </html> 

A, b, c, d, e et f pourraient être divs non seulement un texte brut.

Je veux obtenir l'événement de clic de souris, mais comment savoir si c'est à l'intérieur ou à l'extérieur de #in_or_out div?

EDIT :: gars, je sais comment vérifier si le div est cliqué ou non, mais je veux que mon événement soit déclenché lorsque le clic est en dehors de ce div

 $("body > div").click(function() { if ($(this).attr("id") == "in_or_out") { // inside } else { // not inside } }); 

EDIT: vient d'apprendre qu'il y a une négation:

 $("body > div:not(#in_or_out)").click(function(e) { // not inside }); 

Si vous souhaitez détecter si vous avez cliqué à l'intérieur ou à l'extérieur de la div, configurez le gestionnaire d'événements sur documentElement et laissez-le propager des autres éléments vers le haut:

 $("html").click(function (e) { if (e.target == document.getElementById("in_or_out")) alert("In"); else alert("Out!"); }); 

Peut-être que cela vous aidera

 $('body').click(function(){ //do smth }); $('div#in_or_out').click(function(e){ e.stopPropagation(); // do smth else }); 

Dépend de ce que vous voulez. Si vous voulez seulement exécuter du code, alors qu'il était dans #in_or_out , vous pouvez:

 $('#in_or_out').click(function(){ /* your code here */ }); 

Vous pouvez avoir une variable d'état qui indique si la souris est dans #in_or_out ou non:

 var inside = false; $('#in_or_out').hover(function() { inside = true; }, function() { inside = false; }); 

Ensuite, chaque fois qu'un clic se produit, vous pouvez vérifier avec l' inside si le clic était dans in_or_out ou non.

Référence: .hover()

Mettre à jour:

Peu importe quel élément vous liez le gestionnaire de click , vous pouvez toujours le faire:

 $('element').click(function() { if ($(this).attr('id') !== 'in_or_not') { } }); 

Car à l'intérieur serait

 $("#in_or_out").click(function() { // do something here }); 

Pour l'extérieur … Je n'ai aucune idée.

Edit: Vous pouvez essayer de faire de même pour body-tag (en assignant un click-handler au document lui-même). Mais je ne suis pas sûr que les deux événements fassent feu.

Comme ça?

 $("#in_or_out").click(function() { alert("IN DIV!"); });