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 :

plugin Newsticker. J'aimerais passer à la nouvelle suivante sans délai


Sujet :

jQuery

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut plugin Newsticker. J'aimerais passer à la nouvelle suivante sans délai
    Bonjour à tous,

    Je vous écris pour vous faire part d'une petite mise à jour que j'aimerais réaliser sur un petit module Jquery fait par Texotela. Ce module permet d'afficher du texte dans un div et d'en changer toutes les X secondes avec un effet de Fade.

    Le module marche parfaitement mais j'aimerais juste pouvoir passer à la news suivante sans attendre le chargement après les X secondes.

    Voici le site Internet où vous pourrez trouver le module Jquery si cela peut aider certains : http://www.texotela.co.uk/code/jquery/newsticker/

    Voici le code source :

    //Code Javascript

    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
    jQuery.fn.newsTicker = jQuery.fn.newsticker = function(delay)
    {
    	return this.each(
    		function()
    		{
    			if(this.nodeName.toLowerCase()!= "ul") return;
    			delay = delay || 4000;
    			var self = this;
    			self.items = jQuery("li", self);
    			// hide all items (except first one)
    			self.items.not(":eq(0)").hide().end();
    			// current item
    			self.currentitem = 0;
    			var doTick = function()
    			{
    				jQuery.newsticker(self);
    			}
    			setInterval(doTick,delay);
    		}
    	)
    	.addClass("newsticker")
    	.hover(
    		function()
    		{
    			// pause if hovered over
    			this.pause = true;
    		},
    		function()
    		{
    			// unpause when not hovered over
    			this.pause = false;
    		}
    	);
    }
    jQuery.newsticker = function(el)
    {
    	// return if hovered over
    	if(el.pause) return;
    	// hide current item
    	jQuery(el.items[el.currentitem]).fadeOut("slow",
    		function()
    		{
    			jQuery(this).hide();
    			// move to next item and show
    			el.currentitem = ++el.currentitem % (el.items.size());
    			jQuery(el.items[el.currentitem]).fadeIn("slow");
    		}
    	);
    }
     
    $(document).ready(
    	function()
    	{
    		$("#news").newsTicker();
    	}
    );
    //Code HTML

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                <ul id="news">
                    <li><h2 class="back_ground">Test n°1<BR />Ceci est un test numéro 1</h2></li>
                    <li><h2 class="back_ground">Test n°2<BR />Ceci est un test numéro 2</h2></li>
                    <li><h2 class="back_ground">Test n°3<BR />Ceci est un test numéro 3</h2></li>
                    <li><h2 class="back_ground">Test n°4<BR />Ceci est un test numéro 4</h2></li>
                </ul>

    Avez-vous une idées chers professionnels du javascript / Jquery ? Par exemple créer une fonction suivante() qui permettrait de passer à la news qui suit...

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut,
    il suffit de regarder un peu. Il n'y a qu'un setInterval, il appelle une fonction doTick qui est définie juste au-dessus, elle appelle jQuery.newsticker(self), et self est l'objet this, c'est-à-dire, dans le cas présent, l'objet $("#news") sur lequel le plugin a été appelé.

    Donc voilà ta fonction suivante() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery.newsticker($("#news"));
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bah j'ai bien essayé ça mais ça ne fait rien..? ça marche pas...

    Cela ne me fait rien du tout en fait

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Alors essaye plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery.newsticker(document.getElementById("news"));
    Car en fait, self n'est pas l'objet $('#news') mais le contenu de cet objet, c'est-à-dire l'élément #news lui-même (la liste <ul>), à cause de cette fameuse itération explicite (this.each) qu'on est tenu d'utiliser quand on développe un plugin.

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Arf ça marche pas non plus, merci de t'être penché sur mon soucis...

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Avec le script javascript directement c'est pas plus simple pour vous ?!?

    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
     
    (function($) {
     
    $.fn.newsTicker = $.fn.newsticker = function(delay)
    {
    	delay = delay || 4000;
    	initTicker = function(el)
    	{
    		stopTicker(el);
    		el.items = $("li", el);
    		// hide all items (except first one)
    		el.items.not(":eq(0)").hide().end();
    		// current item
    		el.currentitem = 0;
    		startTicker(el);
    	};
    	startTicker = function(el)
    	{
    		el.tickfn = setInterval(function() { doTick(el) }, delay)
    	};
    	stopTicker = function(el)
    	{
    		clearInterval(el.tickfn);
    	};
    	pauseTicker = function(el)
    	{
    		el.pause = true;
    	};
    	resumeTicker = function(el)
    	{
    		el.pause = false;
    	};
    	doTick = function(el)
    	{
    		// don't run if paused
    		if(el.pause) return;
    		// pause until animation has finished
    		el.pause = true;
    		// hide current item
    		$(el.items[el.currentitem]).fadeOut("slow",
    			function()
    			{
    				$(this).hide();
    				// move to next item and show
    				el.currentitem = ++el.currentitem % (el.items.size());
    				$(el.items[el.currentitem]).fadeIn("slow",
    					function()
    					{
    						el.pause = false;
    					}
    				);
    			}
    		);
    	};
    	this.each(
    		function()
    		{
    			if(this.nodeName.toLowerCase()!= "ul") return;
    			initTicker(this);
    		}
    	)
    	.addClass("newsticker")
    	.hover(
    		function()
    		{
    			// pause if hovered over
    			pauseTicker(this);
    		},
    		function()
    		{
    			// resume when not hovered over
    			resumeTicker(this);
    		}
    	);
    	return this;
    };
     
    })(jQuery);
    Y'a pas moyen de faire un ++$("#news").newsTicker ou un truc comme ça ?

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Ouaip, je l'avais récupéré déjà. Chez moi ça marche, ton problème doit être ailleurs...
    Par contre il va y avoir un problème si l'utilisateur clique sur "suivant" à peu près en même temps que le passage "naturel" à la news suivante : visiblement le plugin n'est pas prévu pour ça, on se retrouve avec deux news affichées... A toi de voir si tu gardes ton idée ou pas.

    Perso je trouve le plugin pas super bien foutu, tu pourrais en trouver un autre.

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. A la ligne suivante sans passer par #13#10 dans un richedit
    Par Ardely dans le forum Composants VCL
    Réponses: 13
    Dernier message: 24/08/2007, 17h58
  2. passer à la page suivante avec jsp
    Par miguelli.corleone dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/07/2007, 13h52
  3. [Tableaux] Passer à l'élément suivant
    Par cyrill.gremaud dans le forum Langage
    Réponses: 2
    Dernier message: 13/09/2006, 10h31
  4. Sous-Formulaire : Passer à l'enregistrement suivant
    Par snoopy69 dans le forum Access
    Réponses: 4
    Dernier message: 27/04/2006, 13h22
  5. Etat : comment passer à la page suivante
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 26/10/2005, 16h45

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