Exclure l’événement click en fonction de la condition?

J’essaie de poser des conditions à un événement jQuery. J’ai un élément d’entrée et un div. Je veux détecter un clic n’importe où sur la page et exécuter cette méthode, mais seulement si le clic n’est pas sur l’entrée ou div.

Utilisez les fonctions jQuery click () ou live (), puis vérifiez la cible de l’événement click à l’aide de la fonction jQuery is ().

  1. lier l’événement click sur le document
  2. si la cible n’est pas entrée ou div continue

.

$(document.body).click(function(e) { if( !$(e.target).is("input, div") ) { console.log("Run function because image or div were not clicked!"); } }); 

Exemple de page Web => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-document-click-exclusion.html

Exemple de sortie de firebug après avoir cliqué sur une page d’exemple

texte alternatif

Quelque chose comme ça devrait marcher.

 $('body').click(function(event){ // body click var $target = $(event.target); // click target if($target.is('#mydiv, #myinput')) { // click target is div or input $target.click(); // click div or input } }); 

Atsortingbuez un gestionnaire de clics au corps de la page, puis testez l’élément cible de l’événement pour voir si l’id de cet élément cible correspond à votre div ou à votre entrée.

 $("body").click(function(evt) { var targetElementId = evt.target.id; if (!(targetElementId == "yourDivID" || targetElementId == "yourinputId")) { // your event code here. } }); 
 var input = $("#yourInput")[0]; var div = $("#yourDiv")[0]; $(document.body).click(function(e) { switch ( e.target ) { case input: case div: return; } yourMethod(); }); 

Exemple pour exclure des éléments spécifiques à l’aide d’un caractère générique:

 $("#mydiv li").click(function(e){ var Target = new Ssortingng(e.target.id); // prevent action when a element with id containing 'img_' is clicked if( !Target.match(/img_/ )) { // do something } });