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!"); });