Submitted by mageonyme on
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,
Salut et Si dans ton
Permalien Soumis par benfarhat le 29 Avril, 2011 - 19:00
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
Permalien Soumis par mageonyme le 29 Avril, 2011 - 21:09
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
Permalien Soumis par benfarhat le 29 Avril, 2011 - 22:29
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 :)