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 :

Closure et Evènement


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut Closure et Evènement
    Bonjour

    J'aimerais en JS créé 4 boutons et lorsque je clique sur le bouton 2 par exemple, qu'il m'affiche 2 dans une alerte

    Voici le code effectué

    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8">
     
    	<title>Test</title>
     
    	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    	<script type="text/javascript" src="slider.js" charset="utf-8"></script>
     
    </head>
     
    <body>
     
    <div id="ap"></div>
    </body>
    </html>
    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
    $(document).ready(function() {
    	$("#ap").fn_ap();
    });
     
    $.fn.fn_ap = function() { 
     
    	var that = this;
    	var nbSlide = 4;
    	var current = 0;
     
    	for (var i = 0; i < nbSlide; i++) {
    		var numero = $('<div>'+(i+1)+'</div>').appendTo(that);
    		numero.css({display:'inline-block', textAlign:'center', height:'30px', width:'30px', lineHeight:'30px', lineWidth:'30px', color:'white', backgroundColor:'gray', marginRight:'10px' });
    		$( document ).on("click", numero, function (num) { return function () { alert(num); }; }(i));
    	}
    }
    Evidemment, ce code ne fonctionne pas. Quand je clique, meme en dehors des 4 boutons, il m'affiche 0 puis 1 puis 2 puis 3

    Je souhaiterais d'une part que le code ne s'active que sur le click du bouton (numero dans le code) et d'autre part qu'il n'affiche que la position de l'élément cliqué

    Surement un cas classique mais je patauge

    Merci de votre aide

    FranckJ21

  2. #2
    Membre chevronné Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Par défaut
    ceci peut-être?
    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
    $(document).ready(function() {
    	$("#ap").fn_ap();
    });
     
    $.fn.fn_ap = function() { 
     
    	var that = this;
    	var nbSlide = 4;
    	var current = 0;
     
    	for (var i = 1; i <= nbSlide; i++) {
    		var numero = $('<div id="_'+i+'" class="button">'+i+'</div>').appendTo(that);
    		numero.css({display:'inline-block', textAlign:'center', height:'30px', width:'30px', lineHeight:'30px', lineWidth:'30px', color:'white', backgroundColor:'gray', marginRight:'10px' });
    		$(numero).click(function (e) { alert(e.target.id.susbtr(1)); });
    	}
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    Malheureusement, ce code ne déclenche pas le click du tout

  4. #4
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 744
    Par défaut
    jour

    en javascript + dom c'est de cette façon que l'on procède

    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
    <html>
    <head>
    <style type="text/css">
     
    body{background-color:gray;}
    </style>
    <script>
     
    function teste(){
     
    	var nbSlide = 4;
     
    	for (var i = 0; i < nbSlide; i++) {
    		var numero = document.createElement("div");
    		numero.textContent=i+1
    		numero.style.cssText="cursor:pointer;display:inline-block;textAlign:center;height:30px;width:30px;lineHeight:30px;lineWidth:30px;color:white;backgroundColor:gray;marginRight:10px"
    		numero.setAttribute("onclick","alert("+i+")");
    		document.body.appendChild(numero)
    	}
    }
    </script>
    </head>
    <body>
    <input type="button" onclick="teste()">charger</input>
    </body></html>

  5. #5
    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
    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
    <!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.min.css">
      <style>
     
      </style>
    </head>
    <body>
     
      <div id="ap"></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";
     
        $.fn.dvjhNum = function( ){
          var
            nbSlide = 4,
            current = 0,
            jObj = $( "<button/>", {
              "data-num" : "-1",
              "css" : {
                "display" : "inline-block",
                "text-align" : "center",
                "height" :"30px",
                "width" :"30px",
                "line-height" : "30px",
                "line-width" : "30px",
                "color" : "white",
                "background-color" : "gray",
                "margin-right" : "10px"
              },
              "click" : function( event ){
                alert( $( this ).data( "num" ) );
              }
            });
     
     
          return this.each( function( i, item ){
            for ( current = 1; current <= nbSlide; current++ ){
              jObj
                .clone( true, true)
                .text( current )
                .data( "num", current )
                .appendTo( item );
            }
          });
        };
     
        $( function(){ // forme abrégée de $(document).ready( function( ){      
     
          $("#ap").dvjhNum();
     
        });
     
        $( 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.)

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut
    Merci danielhagnoul, le passage par un .data répond à ma demande

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SynEdit] Evénement OnContextHelp
    Par sjrd dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/11/2004, 16h33
  2. Evènement OnMouseWheel pour un TCustomControl
    Par blan dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/11/2004, 14h37
  3. Non réception d'un evènement sur une JTable
    Par Kant dans le forum Composants
    Réponses: 4
    Dernier message: 28/05/2004, 10h38
  4. [C++]closure + héritage + transtypage
    Par JEG dans le forum C++Builder
    Réponses: 11
    Dernier message: 30/01/2004, 14h26
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

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