IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Suppression div au click a l'extérieur de celui ci


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut Suppression div au click a l'extérieur de celui ci
    Bonjour, je souhaite supprimer un div (.ui-dialog) par événement click à l'extérieur de celui ci

    A l'heure actuel j'ai ce script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     /*$(document).mouseup(function (e)
        {
            var container = $(".ui-dialog");
     
            if (!container.is(e.target) // if the target of the click isn't the container...
                    //et la cible que lon clique n'est pas un descendant du conteneur
                    && container.has(e.target).length === 0 && e.target != $("#ui-datepicker-div") ) // ... nor a descendant of the container
     
            {
                container.hide();
            }
     
        });*/
    Le div est bien supprimer au click a l'extérieur, mais helas mon div .ui-dialog(boite de dialogue) peut contenir une page, pour ma par un formulaire contenant un champ datepicker(calendrier) qui au click dessus un calendrier s'ouvre (#ui-datepicker-div), qui celui-ci est contenu en dehors de mon div(.ui-dialog ) et en position absolue par rapport au body.
    Donc quand je click sur le calendrier (#ui-datepicker-div), mon div .ui-dialog et supprimer vu que j'ai clické sur un élément dehors du div .uidialog

    Donc ma question est: Comment exclure (à ajouter dans mes condition)que si je click sur mon calendrier(#ui-datepicker-div) mon div .ui-dialog n'est pas supprimé?

    Merci les amis

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Question simple a priori, mais qui m'a bien fait souffrir !

    Je pense avoir trouvé la bonne solution, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="initial-scale=1.0">
      <meta name="author" content="Daniel Hagnoul">
      <title>Test</title>
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/sunny/jquery-ui.css">
      <style>
     
        #datepicker { display: block; margin: 12px; }
        .ui-dialog { min-width: 150px; min-height: 150px; margin: 12px; margin-top: 120px; padding: 6px; border: 1px solid red; }
     
      </style>
    </head>
    <body>
     
      <input id="datepicker">
     
      <div class="ui-dialog">
        <div>
          <h3>Bronzés</h3>
          <p>Hello les bronzés !</p>
        </div>
        <div>
          <h3>Ski</h3>
          <div>
            <p>Les bronzés font du ski en hiver.</p>
          </div>
        </div>
      </div>
     
      <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
      <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
      <script>
        "use strict";
     
        $( function(){ // forme abrégée de $(document).ready( function( ){
     
          $.datepicker.regional[ 'fr' ] = {
            "closeText" : 'Fermer',
            "prevText" : 'Précédent',
            "nextText" : 'Suivant',
            "currentText" : 'Aujourd\'hui',
            "monthNames" : ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
                'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
            "monthNamesShort" : ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
                'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
            "dayNames" : ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
            "dayNamesShort" : ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
            "dayNamesMin" : ['D','L','M','M','J','V','S'],
            "weekHeader" : 'Sem.',
            "dateFormat" : 'dd/mm/yy',
            "firstDay" : 1,
            "isRTL" : false,
            "showMonthAfterYear" : false,
            "yearSuffix" : ''
          };
     
          $.datepicker.setDefaults( $.datepicker.regional[ 'fr' ] );
     
          $( "#datepicker" ).datepicker();
     
          $( document ).on( "mouseup", function( event ){
            if (
              event.target != $( "#datepicker" )[0] &&
              ! $( event.target ).parents( "div" ).hasClass( "ui-widget" )
            ) {
              var container = $( ".ui-dialog" );
     
              if (
                ! container.is( event.target ) &&
                container.has( event.target ).length === 0
              ){
                container.hide();
              }
            }
          });
     
        });
     
        $( window ).load( function(){
     
        });
      </script>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Ouvrir une div sur click d'un lien précis
    Par sebiv dans le forum jQuery
    Réponses: 51
    Dernier message: 19/03/2014, 16h41
  2. [AJAX] Afficher du texte de la BDD dans div au click
    Par karamaster dans le forum AJAX
    Réponses: 12
    Dernier message: 05/03/2014, 16h33
  3. Afficher une div au click et la cacher
    Par flashnet dans le forum jQuery
    Réponses: 2
    Dernier message: 03/04/2012, 15h44
  4. Réponses: 1
    Dernier message: 01/04/2011, 14h10
  5. Masquer un <div> si click externe au <div>
    Par van___fanel dans le forum jQuery
    Réponses: 1
    Dernier message: 10/12/2009, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo