Chargement ajax lorsque défilement atteint 80%
Je suis en utilisant le code suivant qui fonctionne lorsque la barre de défilement atteint le bas,
if($(window).scrollTop() == $(document).height() - $(window).height()){
J'souhaitent cependant que l'ajax est déclenché quand j'ai atteint 70% de défilement n'est pas à 100.
- La recherche de plus..
InformationsquelleAutor Yahoo | 2012-05-19
Vous devez vous connecter pour publier un commentaire.
Fourni votre chèque est tir lors d'un défilement de la page du bas, vous pouvez essayer quelques-uns de base de l'arithmétique:
Assurez-vous d'ajouter une case pour ne pas le feu simultanément plusieurs requêtes Ajax, si vous ne l'avez pas déjà fait.
C'est plutôt hors de la portée de la question, mais si vous voulez un exemple de la façon d'éviter les demandes multiples de l'être déclenchés simultanément:
Déclarer un mondial var, par exemple,
processing
.Ensuite l'incorporer dans votre fonction:
C'est un exemple simple de l'utilisation d'une var à suivre si il y a un actif à une requête Ajax pour votre fonction de défilement ou non, et ne pas interférer avec un autre concordante requête Ajax qui vous pouvez avoir.
Edit: JSFiddle exemple
Veuillez noter que l'utilisation d'un % à mesurer la hauteur pourrait être une mauvaise idée, vu que le document de la hauteur va augmenter à chaque fois que vous chargez une chose, faire déclencher la requête Ajax étant relativement plus loin du fond de la page (dans l'absolu-taille sage).
Je vous recommande d'utiliser une valeur fixe de décalage pour éviter que (200 à 700 environ):
Exemple: JSFiddle
Edit: Pour reproduire le problème dans le premier code, avec des pourcentages, charge 50
div
s en elle. Lorsque vous chargez la prochainediv
, il va ajouter de seulement 2% pour le total du document en hauteur, sens de la prochaine demande sera déclenché dès que vous faites défiler ces 2% de la 70% de la hauteur. Dans mon fixe exemple, la définition de fond de compensation à la charge du nouveau contenu uniquement lorsque l'utilisateur est défini absolue pixels de gamme à partir du bas de l'écran..scroll()
fonction est plus efficace que cela. Je ne pense pas que la personne ne se soucie de ce.processing
drapeau permettra d'éviter toute requête Ajax en provenance de cette fonction tout et ce, uniquement lorsqu'une requête AJAX à partir de cette fonction est en cours d'exécution. Après l'appel AJAX est terminée, et vous faites défiler passé de 70% à nouveau, il va en tirer à nouveau et répéter le cycle.return false
peu importe combien de fois il est appelé alors queprocessing
est égal àtrue
. Il assure qu'une seule instance est dirigée à la fois. Si l'OP a venir les fonctions (ce qui est complètement hors de question de portée), il peut ajouter laprocessing=false;
lors de l'appel AJAX se termine en réalité, comme spécifié dans mon commentaire dans la réponse du code.0 < $(document).height() - $(window).height() - 700
à l'avance, parce que sinon, vous allez faire des demandes déjà en haut de l'écran, ce qui peut entraîner beaucoup de demandes - même infiniment de nombreux cas, si la demande ne change pas la hauteur.Une recherche rapide sur google pour
get percentage scrolled down
apporte cette page que le premier résultat(avec le code ci-dessous, qui a plus ou moins fait ce que vous voulez). J'ai envie de vous n'essaiera pas de recherche avant de demander ici.