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 :

Je trouve this récalcitrant


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Par défaut Je trouve this récalcitrant
    Je n'ai pas vraiment compris pourquoi, mais JQuery n'est pas si simple qu'il n'y parait à utiliser :

    ce code ne marche pas correctement :

    Voici le script JS qui est dans la page HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	var tab_img=["imgPromo1","imgPromo2","imgPromo3","imgPromo4","imgPromo5","imgPromo6"];
     
    		jQuery.each(tab_img, function() {
     
    			$('#'+this).mouseover(function(e){ affImgGrand(this,e.pageX,e.pageY) });
     
    			$('#'+this).mouseout(function(e){ cachImgGrand(this)});
     
    		});



    C'est simple, il déclenche le lancement de addImgGrand contenu dans un fichier JS externe, sa fonction est d'afficher les images en grand contenue dans un <div> (de imgPromo1 à imgPromo6) :

    <div id="imgPromo1" style="display:none"><img src="monimg.gif" class="truc"></div> (remarquez qu'au démarrage il est cachée par style="display:none").

    Quant à cachImgGrand() il fait disparaitre notre <div>, quelque chose m'a échappé ?! "this" ne semble pas être sous la bonne forme en arrivant dans la fonction, car je récupère un objet (testé avec alert() )!



    Mes 2 fonctions externes :


    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
     
    	function affImgGrand(eltId,x,y)
     
    	{
     
    		eltId=eltId+"-Gde";
     
    		$("#"+eltId).css("left",20+x+"px");
     
    		$("#"+eltId).css("top",20+y+"px");
     
    		$("#"+eltId).show();
     
    	}
     
    	function cachImgGrand(eltId)
     
    	{
     
    		eltId=eltId+"-Gde";
     
    		$("#"+eltId).hide();
     
    	}

  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
    Bonsoir

    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
    <script>
    	/*
    	 * C'est le comportement normal, pour
    	 * le comprendre je vous conseille d'utiliser
    	 * Firebug et console.log()
    	 */
    	function affImgGrand(elt, x, y){
    		console.log(elt, elt.id);
     
    		$("#"+ elt.id + "-Gde").css({
    			"left": 20+x+"px",
    			"top": 20+y+"px"
    		}).show();
    	}
     
    	function cachImgGrand(elt){
    		//console.log(elt, elt.id);
     
    		$("#"+ elt.id + "-Gde").hide();
    	}
     
    	$(function(){
    		var tab_img = ["imgPromo1", "imgPromo2"];
     
    		$.each(tab_img, function(i, item){
    			// ici je vous conseille item et non this
    			// voir la doc sur $.each()
    			console.log(item);
     
    			$('#'+item).mouseenter(function(e){
    				// ici this est égal à $('#'+item)[0]
    				console.log(this);
     
    				affImgGrand(this, e.pageX, e.pageY);
    			});
     
    			$('#'+item).mouseleave(function(){
    				// ici this est égal à $('#'+item)[0]					
    				console.log(this);
     
    				cachImgGrand(this);
    			});
    		});
    	});
    </script>

    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.)

  3. #3
    Membre confirmé Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Par défaut
    Ce n'était pas évident de le deviner, en consultant la doc d'API je n'arrivais pas à trouver la solution... Merci pour l'éclairage pertinent !

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 14/08/2003, 11h37
  2. je ne trouve pas la bonne syntaxe
    Par poelvo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2003, 01h30
  3. [TP]trouve pas le graph.tpu
    Par kaygee dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 13/06/2003, 12h49
  4. où se trouve la console sur JBuilder 8?
    Par alaie dans le forum JBuilder
    Réponses: 8
    Dernier message: 19/04/2003, 19h39
  5. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15

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