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 :

Plusieurs news défilantes sur une même page


Sujet :

jQuery

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut Plusieurs news défilantes sur une même page
    Bonjour à tous,

    j'utilise le plugin disponible ici: http://plugins.jquery.com/project/vTicker

    Il fonctionne très bien pour 1 news défilante. Cependant, j'aimerais avoir plusieurs "boîtes" avec du texte qui défile sur une même page. Or, quand j'essaye d'appeler le script plusieurs fois, cela ne fonctionne plus

    Voici la fonction:

    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
     
    (function($){
    $.fn.vTicker = function(options) {
    	var defaults = {
    		speed: 700,
    		pause: 8000,
    		showItems: 1
    	};
     
    	var options = $.extend(defaults, options);
     
    	moveUp = function(obj, height){
        	first = obj.children('ul').children('li:first').clone(true);
        	obj.children('ul')
        	.animate({top: '-=' + height + 'px'}, options.speed, function() {
            	$(this).children('li:first').remove();
            	$(this).css('top', '0px');
            });
     
        	first.appendTo(obj.children('ul'));
    	};
     
    	return this.each(function() {
    		obj = $(this);
    		maxHeight = 0;
     
    		obj.css({overflow: 'hidden', position: 'relative'})
    			.children('ul').css({position: 'absolute', margin: 0, padding: 0})
    			.children('li').css({margin: 0, padding: 0});
     
    		obj.children('ul').children('li').each(function(){
    			if($(this).height() > maxHeight)
    			{
    				maxHeight = $(this).height();
    			}
    		});
     
    		obj.children('ul').children('li').each(function(){
    			$(this).height(maxHeight);
    		});
     
    		obj.height(maxHeight * options.showItems);
     
        	interval = setInterval('moveUp(obj, maxHeight)', options.pause);
    	});
    };
    })(jQuery);
    Qui est appelée comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function(){
    $('.myclass').vTicker();
    });

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    Personne n'a une petite idée ?

  3. #3
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par fixbraun Voir le message
    Personne n'a une petite idée ?
    comment appelles tu les classes des autres "boites"? Je te donne ici le code pour une autre boite qui aurait la classe .classboite2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(document).ready(function(){
    $('.myclass').vTicker();
    $('.classboite2').vTicker();
    });

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    J'ai déjà essayé cette possibilité mais seule la deuxième classe appelée fonctionne...

  5. #5
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par fixbraun Voir le message
    J'ai déjà essayé cette possibilité mais seule la deuxième classe appelée fonctionne...
    peux tu poster le code entier de la page (html+js) ?

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    Voilà la page html et le JS

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <title>TEST</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <script src="script.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    	$('.myclass').vTicker();
    	$('.myclass2').vTicker();
    });
    </script>
    </head>
     
    <body>
    <div class='myclass'>
      <ul>
    	<li>MESSAGE N°1</li>
    	<li>MESSAGE N°2</li>
    	<li>MESSAGE N°3</li>
    	<li>MESSAGE N°4</li>
      </ul>
    </div>
    <hr />
    <div class='myclass2'>
      <ul>
    	<li>MESSAGE N°1</li>
    	<li>MESSAGE N°2</li>
    	<li>MESSAGE N°3</li>
    	<li>MESSAGE N°4</li>
      </ul>
    </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
    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
    (function($){
    $.fn.vTicker = function(options) {
    	var defaults = {
    		speed: 700,
    		pause: 8000,
    		showItems: 1
    	};
     
    	var options = $.extend(defaults, options);
     
    	moveUp = function(obj, height){
        	first = obj.children('ul').children('li:first').clone(true);
        	obj.children('ul')
        	.animate({top: '-=' + height + 'px'}, options.speed, function() {
            	$(this).children('li:first').remove();
            	$(this).css('top', '0px');
            });
     
        	first.appendTo(obj.children('ul'));
    	};
     
    	return this.each(function() {
    		obj = $(this);
    		maxHeight = 0;
     
    		obj.css({overflow: 'hidden', position: 'relative'})
    			.children('ul').css({position: 'absolute', margin: 0, padding: 0})
    			.children('li').css({margin: 0, padding: 0});
     
    		obj.children('ul').children('li').each(function(){
    			if($(this).height() > maxHeight)
    			{
    				maxHeight = $(this).height();
    			}
    		});
     
    		obj.children('ul').children('li').each(function(){
    			$(this).height(maxHeight);
    		});
     
    		obj.height(maxHeight * options.showItems);
     
        	interval = setInterval('moveUp(obj, maxHeight)', options.pause);
    	});
    };
    })(jQuery);
    Quand tu vois le résultat, seule myclass2 fonctionne et encore, les news ne défile pas du tout correctement...

    Par contre, si tu retires...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div class='myclass2'>
      <ul>
    	<li>MESSAGE N°1</li>
    	<li>MESSAGE N°2</li>
    	<li>MESSAGE N°3</li>
    	<li>MESSAGE N°4</li>
      </ul>
    </div>
    ... cela fonctionne correctement pour myclass

    J'aimerais donc faire fonctionner ces 2 "box de news" en mm temps...

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    Il semblerait qu'il y ait un problème de boucle. En effet, quand on laisse la page pendant un petit temps, à chaque tour complet des news, chaque news est dédoublée.

    Donc, après 4 tours par exemple, le deuxième <li> apparait 4 fois, de mm que le 3eme ...

    Je n'en trouve toujours pas la raison :s

Discussions similaires

  1. [PDO] Plusieurs requêtes PDO sur une même page PHP
    Par Soso_ dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2014, 13h45
  2. Sortir plusieurs graphs SAS sur une même page
    Par AstridG dans le forum ODS et reporting
    Réponses: 16
    Dernier message: 15/12/2010, 14h23
  3. Plusieurs Images Alléatoires sur une même page
    Par GuillaumeS dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2009, 21h32
  4. Réponses: 2
    Dernier message: 25/02/2009, 20h49
  5. plusieurs Band maitre sur une même page
    Par looping dans le forum Rave
    Réponses: 0
    Dernier message: 13/02/2009, 17h40

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