Défilement continu avec points de passage jQuery

J’essaie de suivre cette réponse afin de créer une technique de défilement infini. Dans mon exemple de code, pourquoi ne fonctionne-t-il pas? Je voudrais simuler que le contenu soit chargé chaque fois que j’atteins le bas. Actuellement, cela ne fonctionne que pour un montant fini.

Après avoir lu la documentation, je pense que je ne rafraîchis pas correctement. Je soupçonne que le recalcul du “sharepoint déclenchement” ne déclenche pas. Je ne sais pas comment le faire fonctionner.

Dans mon exemple, je simule le nouveau contenu en cours de chargement en appelant la fonction getMore () qui ajoute plus de Div. Je veux obtenir l’effet que cette page ne finit jamais.

S’il vous plaît voir: jsfiddle

HTML:

Some text here.

Some text here.

Some text here.

Some text here.

Javascript:

 $(document).ready(function() { var pageId=0; $("#waypoint").waypoint(function(direction) { if (direction === 'down') { getMore(++pageId); } }, { context: '.viewport .viewport-content', offset: 'bottom-in-view' }); function getMore(myPageId) { console.log("Loading page " + myPageId); for (var i=1; i<11; i++) { $("#messages").append("

Page " + myPageId + ". Row " + i + ".

"); } $.waypoints('refresh'); } });

https://stackoverflow.com/questions/22845377/continuous-scrolling-with-jquery-waypoints/demo.html (Exemple de démo du raccourci de défilement infini)

      * { margin:0; padding:0; } body { font-size:16px; line-height:1.5; color:#6a6272; background:#d5c5e5; padding-bottom:16px; font-family:"Lato", sans-serif; } .inner { width:460px; padding:0 10px; margin:0 auto; } h1, h2, h3, h4 { font-family:"PT Serif", serif; font-weight:normal; } h1 { font-size:53px; color:#444a50; } h2 { text-align:center; background:#6a6272; color:#eae2f2; font-size:24px; } pre { white-space:pre-wrap; font-size:14px; background:#fff; padding:10px; } code { font-family:"Ubuntu Mono", monospace; } p, pre, ul, .example, dl { margin-top:16px; } h3 { font-size:24px; } ol { margin-left:12px; } li { margin-top:6px; } .steps { background:#6a6272; color:#eae2f2; padding:16px 0; margin-top:16px; } .options { background:#6a6272; color:#eae2f2; padding:16px 0; margin-top:16px; } dt { font-weight:bold; color:#fff; margin-top:6px; } dd { margin-left:16px; } .fn { color:#111; } .kw { color:#a33; } .str { color:#3a3; } .cm { color:#33a; } .key { color:#939; } p code, li code, dl code { padding:0 2px; background:#eae2f2; } .steps li code, .options dl code { background:#444a50; } .options strong, .steps strong { color:#fff; } pre code { color:#888; } .infinite-container { width:480px; margin-left:-20px; overflow:hidden; position:relative; } .infinite-container.infinite-loading:after { content:"Loading..."; height:30px; line-height:30px; position:absolute; left:0; right:0; bottom:0; text-align:center; background:#6a6272; color:#eae2f2; } .infinite-item { float:left; width:100px; height:100px; background:#444a50; margin:20px 0 20px 20px; } .infinite-item:nth-child(3n) { background:#6a6272; } .infinite-item:nth-child(3n+1) { background:#eae2f2; } .infinite-more-link { visibility:hidden; }    

Example

More
$(document).ready(function() { $('.infinite-container').waypoint('infinite'); });

Je voulais faire le même genre de chose et j’ai fini de passer de Waypoints à Bullseye:

http://pixeltango.com/resources/web-development/jquery-bullseye-viewport-detection-events/

Donc, vous pourriez faire quelque chose comme ça:

 var myPageId = 1; function getMore(e) { for (var i=1; i<11; i++) { $("#messages").append("

Page " + myPageId + ". Row " + i + ".

"); } myPageId++; } $('#waypoint').bind('enterviewport', getMore ).bullseye();

Il appellera votre fonction ‘getMore’ à chaque fois que l’élément #waypoint entre dans la fenêtre d’affichage. Ainsi, lorsqu’il saute en bas de la page puis revient, vous recevez un nouveau rappel!

J’espère que cela t’aides.

Géré pour que cela fonctionne. Je pensais que je devrais le partager ici.

J’ai utilisé jQuery Waypoints 3.1.1

 $(document).ready(function() { var pageId=0; var waypoint = new Waypoint({ element: $("#waypoint"), handler: function(direction) { if (direction === 'down') { getMore(++pageId); Waypoint.refreshAll(); } }, offset: 'bottom-in-view' }); function getMore(myPageId) { console.log("Loading page " + myPageId); for (var i=1; i<11; i++) { $("#messages").append("

Page " + myPageId + ". Row " + i + ".

"); } } });

(1) Notez les changements dans l’instanciation du sharepoint cheminement. (nouveau Waypoint ….)

(2) Appelez Waypoint.refreshAll () pour actualiser les points de route après les avoir ajoutés.

J’espère que ça aide. L’extrait de code ci-dessus n’est pas testé, mais devrait théoriquement fonctionner.

Tuer