pager ajax + jquery

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

bonjour,

J'ai mis en ajax le pager de la vue qui émule les pages de taxonomie.
Problème : lorsque l'on clique sur le numéro de page suivante, la div se recharge mais le scroll reste en bas.
J'ai donc mis le code suivant en jquery pour que la scrollbar remonte en haut de ma page :

(function($){
    $(document).ready(function(){
      $('li.pager-item > a.active') .click(function() {
         $('html,body').animate({scrollTop:220},1500);
            return false;
      });
   
   });
})(jQuery);

ceci fonctionne la première fois mais une fois la div rechargée en ajax ça ne fonctionne plus...
je m'explique :

  • jarrive sur la page par un chargement href classique
  • je vais tout en bas et je clique sur le lien "1"
  • la div est rechargée correctement en ajax et ma scrollbar remonte (gràce à la fonction ci-dessus)
  • je retourne en bas, et je clique sur le lien "2"
  • la div est rechargée correctement mais la scrollbar ne remonte plus... (la fonction ci-dessus ne fonctionne alors plus)

une idée ?
merci d'avance,

Version de Drupal : 

Salut

et Si dans ton selecteur tu enleves le .active ???? ca donne quoi??

Remarque
pour dire qu'en principe on ne clique par sur le lien active, donc je pense que ta fonctionne jquery devrait dans un premier temps changer la position de ton scroll mais aussi:
Enlever la classe active aux autres liens
et la donner au lien sur lequel tu as cliquer un truc du genre:

$('a').parent().find('a').removeClass('active');
$(this).parent().addClass('active');

pour la première ligne chuis pas sur, met c'est genre il pointe vers le parent et enlève la classe "active" de toutes les balises "a"

j'espère que ca marchera :)

merci de ta réponse mais en fait ça ne marche pas.
c'est vrai que c'est étrange que tout les liens du pager de ma vue soient avec une classe active même quand il ne le sont pas...
je ne pense pas que ça vienne de là mais plutôt du fait que le jquery est appelé avec document ready et n'est donc pas rechargé avec la div, ce qui explique pourquoi ça fonctionne au premier clic mais pas au 2ème !
j'ai donc changé la fonction comme suit en utilisant .live au lieu de .click :

(function($){
    $(document).ready(function(){
      $('li.pager-item > a').live("click",function() {
         $('html,body').animate({scrollTop:220},1500);
            return false;
      });
   
   });
})(jQuery);

mais ça ne fonctionne pas non plus... même plus du tout... même pas une fois...
de toute façon, l'ajax dans la vue n'est pas très bien géré car, au lieu d'envoyer juste un flux d'information, l'ajax retourne tout le code html ! je laisse tomber pour l'instant car c'est pas très propre l'ajax géré par views... à moins que l'on me prouve le contraire.
i love drupal quand même !

tu ne peut pas tout simplement l'enlever??

$(document).ready(function(){

dans les api jquery tu as des exemple comme suit:

<script>
    $("p").click(function () {
      $(this).slideUp();
    });
    $("p").hover(function () {
      $(this).addClass("hilite");
    }, function () {
      $(this).removeClass("hilite");
    });
</script>

:) ne repond surtout pas! :) on va dire que je pense à haute voix (tout en écrivant sur le clavier)

Une petit remarque sur http://www.la-revanche-des-sites.fr/
ca serait chouette si tu rallonge le timeout de ton slideshow / diaporama :)