2010-07-23 5 views
1

Je veux fondamentalement glisser tous mes Li et haut, ajoutera au fond et ce sera une rotation des événements à venir.avoir la liste glisser vers le haut et ajouter le premier élément à la fin de la liste

C'est ce que j'ai jusqu'à présent. Il glisse le premier vers le haut et l'ajoute à la fin de ul, mais ensuite il continue d'ajouter le même li à l'ul toutes les 1000 ms.

Pourquoi ne glisse-t-il pas le premier? Je suppose que je dois utiliser la fonction live en quelque sorte ??

$(document).ready(function() { 

    function scroll() { 
     $('#events ol li:first').slideUp(); 

     $('#events ol li:last').appendTo($('#events ol')); 
    } 


    setInterval(scroll, 1000); 
}); 

Répondre

4

Vous devez le modifier un peu pour s'ajouter après avoir glissé vers le haut, comme ceci:

$(function() { 
    function scroll() { 
    $('#events ol li:first').slideUp(function() { 
     $(this).show().parent().append(this); 
    }); 
    } 
    setInterval(scroll, 1000); 
}); 

You can see it in a demo here. Qu'est-ce que nous faisons est après le .slideUp() complète, le rappel fonctionne, qui prend l'élément, le montre (puisqu'il était caché à la fin de la .slideUp()) et fait un .append() de lui-même à son parent ... le déplaçant à la fin.

+0

Y a-t-il quelque chose comme 'slideUp()' qui _reveals_ un élément plutôt que de le cacher? Et si oui, pourriez-vous cloner le 'LI' et le faire glisser vers le haut et disparaître en haut tout en glissant dedans et apparaissant en bas simultanément? Je pense que cela ferait un meilleur effet de «défilement», mais je ne sais pas avec quelle facilité cela pourrait être réalisé en utilisant jQuery. –

+1

@ Lèse - Est-ce ce que vous cherchez? http://jsfiddle.net/nick_craver/g6uMF/2/ –

+0

C'est exactement ce que je cherchais; Je n'avais pas réalisé que 'slideDown()' fonctionnait comme ça. Mais tout est logique maintenant que j'ai regardé la documentation. Merci. –

2

Une erreur que je vois, est que votre dernier annexant li, annexant le dernier élément ne fera aucune différence parce qu'il est déjà le dernier élément ...

demo

$(document).ready(function() { 

    function scroll() { 
     $('#events ol li:first-child').slideUp(function(){ 
     $(this).appendTo($('#events ol')).show(); 
     });  
    } 

    setInterval(scroll, 1000);​ 
}); 
Questions connexes