2017-08-26 7 views
2

Im en faisant un contrôle de navigation avec des liens avant et arrière afin que vous avancez ou revenez dans une liste de liens. Lorsque vous cliquez sur suivant, il avance à la première page de la liste, mais reste là. Comment je peux activer le lien visité pour qu'il avance séquentiellement de 1 à 2 puis de 2 à 3 etc ... Merci pour toute aide à ce sujet.Précédent et Suivant Navigation avec Jquery

$(document).ready(function() { 
 
      $('.next-button').click(function() { 
 
       var $el = $('#nav li a.navSelected').removeClass('navSelected'); 
 
       var $next = $el.parent().next(); 
 
       if ($next.length == 0) $next = $('#nav li:first'); 
 
       $next.find('a.nav-button').addClass('navSelected'); 
 
       // Added window.location.href to follow the selected links href 
 
       window.location.href = $next.find('a.nav-button').attr('href'); 
 
      }); 
 
      $('.prev-button').click(function() { 
 
       var $el = $('#nav li a.navSelected').removeClass('navSelected'); 
 
       var $prev = $el.parent().prev(); 
 
       if ($prev.length == 0) $prev = $('#nav li:last'); 
 
       $prev.find('a.nav-button').addClass('navSelected'); 
 
       // Added window.location.href to follow the selected links href 
 
       window.location.href = $prev.find('a.nav-button').attr('href'); 
 
      }); 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="nav"> 
 
<li><a href="pagea.html"class="nav-button">A</a></li> 
 
<li><a href="pageb.html" class="nav-button">B</a></li> 
 
<li><a href="pagec.html" class="nav-button">C</a></li> 
 
<li><a href="paged.html"class="nav-button">D</a></li> 
 
<li><a href="pagef.html" class="nav-button">F</a></li> 
 
</ul> 
 
<div id="arrow-left" class="slide-right"><a href="#" class="prev-button" 
 
title="Previous"><img src="images/arrow-left.png" alt="Left Arrow" width="25" 
 
height="48"></a></div> 
 
<div id="arrow-right" class="slide-left"><a href="#" class="next-button" 
 
title="Next"><img src="images/arrow-right.png" alt="Right Arrow" width="25" 
 
height="48"></a></div>

La réponse a été fournie par Steven dans ce Github:

https://github.com/Steven0213/Back_and_next_nav

+0

Une question chargez-vous également une nouvelle page lorsque vous cliquez sur le lien suivant? Ou dites-vous cacher le texte actuel et montrer le nouveau texte? – Steven

+0

Dès que vous suivez un href, la page est rechargée. Donc, votre question serait plutôt ...? –

+0

Steven: Je cherche à charger une page html différente chaque fois qu'une personne clique sur suivant. Le code fonctionne en fait à partir d'un index pour charger la première page html de la liste, mais quand je clique sur le bouton, il reste juste là et ne va pas à la deuxième page. Je pense que cela a à voir avec l'ajout de l'étiquette active à la page réelle à chaque fois, mais je ne sais pas comment le faire, essayé avec quelques codes d'ici, mais ne fonctionne pas. Merci. –

Répondre

0

J'ai créé this violon pour vous. C'est avec Bootstrap et JQuery. Je ne sais pas Si vous connaissez Bootstrap et JQuery. Si vous avez d'autres questions, il suffit de demander.

1:

var ArrayOfPages = ['One', 'Two', 'Three', 'Four', 'Five']; 
 

 

 
var makeTheRightOneActiveWhenThePageStart = function() { 
 
    var url = window.location.href; 
 
    for (var i = 0; i < ArrayOfPages.length; i++){ 
 
     var newUrl = ArrayOfPages[i] + '.html'; 
 
     if (url.indexOf(newUrl) > 1){ 
 
      var newI = i + 1; 
 
      $("a:contains("+ newI + ")").parent().addClass('active'); 
 
     } } }; 
 

 
var makeTheRightOneActive = function() { var $selector = $(this); var getClass = $selector.attr('class'); var getHTML = $selector.html(); var whatTheSetTrue; switch (getClass){ 
 
     case 'prev': 
 
      whatTheSetTrue = getTheRightOneActiveWhenPressPrevOrNext('prev',getHTML); 
 
      break; 
 
     case 'next': 
 
      whatTheSetTrue = getTheRightOneActiveWhenPressPrevOrNext('next',getHTML); 
 
      break; 
 
     default: 
 
      whatTheSetTrue = getTheRightOneActiveWhenPressPrevOrNext('',getHTML); 
 
      break; } window.open(whatTheSetTrue + '.html', '_self', false) }; 
 

 
var getTheRightOneActiveWhenPressPrevOrNext = function (whatMethode,whichNumber) { 
 
    var whatPageAreYouOn = $('.active').children().html(); 
 
    var whatCurrentPlaceAreYouOn = findAtWhichPlaceYouAreInTheArray(whatPageAreYouOn); 
 
    var newPlace; 
 
    switch (whatMethode){ 
 
     case 'next': 
 
      newPlace = whatCurrentPlaceAreYouOn + 1; 
 
      if (newPlace === 5){ 
 
       newPlace = 4; 
 
      } 
 
      break; 
 
     case 'prev': 
 
      newPlace = whatCurrentPlaceAreYouOn - 1; 
 
      if (newPlace === -1){ 
 
       newPlace = 0; 
 
      } 
 
      break; 
 
     default: 
 
      newPlace = findAtWhichPlaceYouAreInTheArray(whichNumber); 
 
      break; 
 
    } 
 
    return ArrayOfPages[newPlace] }; 
 

 
var findAtWhichPlaceYouAreInTheArray = function (whatPageAreYouOn) { 
 
    whatPageAreYouOn = parseInt(whatPageAreYouOn); 
 
    return whatPageAreYouOn - 1; }; 
 

 
var init = function() { 
 
    makeTheRightOneActiveWhenThePageStart(); 
 
    $('.container .pagination a').on('click',makeTheRightOneActive); }; $(document).ready(init());
div.pageOne, div.pageTwo, div.pageThree, div.pageFour, div.pageFive{ 
 
    margin-top: 15px; 
 
} 
 

 
#nav{ 
 
    text-align: center; 
 
}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 

 
<div class="container"> 
 
    <div class="pageOne"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas imperdiet, risus a rutrum eleifend, nulla lorem laoreet dolor, ut vehicula quam magna et est. Pellentesque egestas sem et ligula tincidunt finibus. Nullam a efficitur mi, eget rutrum 
 
     dolor. Maecenas aliquet nibh quis vehicula gravida. Ut in finibus magna. Sed sagittis, velit ac cursus auctor, tortor dui mattis metus, sed commodo urna erat congue justo. Morbi porta nisi mattis lobortis aliquam. Phasellus nec nibh in ipsum scelerisque 
 
     dignissim. Morbi id diam ut purus rhoncus suscipit placerat at libero. Curabitur quis eros maximus, pharetra urna eget, facilisis ex. Etiam commodo orci aliquet odio fermentum pulvinar. Duis auctor pellentesque condimentum. Duis ut nisi sem. Nulla 
 
     in augue sed augue euismod feugiat in in nunc. Aliquam vel enim eros. Pellentesque leo dui, iaculis quis congue eu, ultrices id nisl.</p> 
 
    </div> 
 
    <div class="pageTwo"> 
 
    <p>Cras vehicula ipsum ac eros porta dapibus. In eu ante varius, porta lectus sit amet, sagittis ipsum. Mauris congue velit mauris, condimentum sollicitudin mi luctus quis. Aliquam erat volutpat. Praesent justo erat, facilisis id eleifend non, accumsan 
 
     vel arcu. Sed id dui malesuada, vulputate velit sit amet, porta orci. Nam eu nunc eu erat accumsan ornare. Vivamus dui lacus, pharetra a bibendum nec, molestie non justo. Praesent at quam urna. Integer pharetra suscipit arcu, in sodales turpis mollis 
 
     ut. Etiam placerat eget ante in congue.</p> 
 
    </div> 
 
    <div class="pageThree"> 
 
    <p>Donec pretium ex a dolor luctus, eu malesuada metus condimentum. Aliquam consequat vestibulum massa, id iaculis magna aliquet malesuada. Nunc interdum turpis vitae metus feugiat, fringilla faucibus libero egestas. Donec tincidunt luctus gravida. Maecenas 
 
     tincidunt interdum enim, vel consequat lacus auctor eu. Vestibulum metus lorem, posuere at gravida nec, lobortis vitae sapien. In auctor tempus pretium. Aliquam dictum urna ac aliquet imperdiet. Ut egestas eros et ante ornare, et pretium erat scelerisque. 
 
     Donec libero nunc, posuere vitae massa non, tempus lacinia nisi.</p> 
 
    </div> 
 
    <div class="pageFour"> 
 
    <p>Nunc a nisl vitae tortor consequat ultrices. Suspendisse tincidunt rutrum ipsum in dictum. Proin tempus mi quis sollicitudin aliquam. Maecenas scelerisque id lectus et fermentum. Morbi dictum elit eu nisi convallis sagittis. In hac habitasse platea 
 
     dictumst. In neque lectus, suscipit non quam sed, viverra viverra nisl. Donec at ex non velit vestibulum molestie a eget ex. In faucibus viverra purus, nec dapibus diam feugiat eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, 
 
     per inceptos himenaeos.</p> 
 
    </div> 
 
    <div class="pageFive"> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In et commodo sapien. Vestibulum rutrum nec nibh ac aliquet. Vestibulum lacus felis, vulputate et pretium eu, posuere euismod sapien. Sed varius vel sapien non dapibus. Nullam metus lectus, 
 
     fringilla quis orci ac, iaculis consectetur ipsum. Curabitur magna purus, interdum non accumsan quis, bibendum euismod ante. Curabitur non suscipit ligula. Aliquam id leo ac dolor eleifend mattis. Maecenas neque dui, vestibulum vel massa nec, pharetra 
 
     sagittis libero. Nunc sit amet aliquet arcu, tempor dapibus lectus. Suspendisse laoreet massa ac tortor egestas sollicitudin. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p> 
 
    </div> 
 
    <nav id="nav" aria-label="Page navigation"> 
 
    <ul class="pagination"> 
 
     <li> 
 
     <a href="#" aria-label="Previous" class="prev"> 
 
      <span aria-hidden="true">&laquo;</span> 
 
     </a> 
 
     </li> 
 
     <li class="active"><a href="#" class="One">1</a></li> 
 
     <li><a href="#" class="Two">2</a></li> 
 
     <li><a href="#" class="Three">3</a></li> 
 
     <li><a href="#" class="Four">4</a></li> 
 
     <li><a href="#" class="Five">5</a></li> 
 
     <li> 
 
     <a href="#" aria-label="Next" class="next"> 
 
      <span aria-hidden="true">&raquo;</span> 
 
     </a> 
 
     </li> 
 
    </ul> 
 
    </nav> 
 
</div>

EDIT 1

var ArrayOfPages = ['One', 'Two', 'Three', 'Four', 'Five']; 

Ce tableau est le tableau de noms de vos pages Web. Qu'est-ce que cela signifie par exemple que vous avez une page Web appelée Un, Deux ...

Vous placez ces noms dans le tableau.

Si les noms ne correspondent pas, il n'ouvrira aucune page Web et ne fera pas les pages actives, car il ne trouve pas une correspondance avec le nom de la page actuelle .

EDIT 2

J'ai créé un Github project pour créer une démo.

+0

Merci beaucoup pour votre aide. Votre code fonctionne bien, mais il charge une DIV à partir d'une série de DIVS dans la même page droite? J'ai besoin de naviguer d'une page à l'autre et ce sont des fichiers .html différents. Donc, pour dire, différents liens dans une liste. La chose avec DIVS est que je ne peux pas faire une page unique gigantesque avec beaucoup de différents DIVS im à la recherche d'un menu simple qui charge différentes pages html. –

+0

Oui parce que j'ai enseigné que ce serait la meilleure option. Vous avez également moins de pages html alors. – Steven

+0

Oui, le fait est que pour un très gros site, plus de mille pages, quand je mets plus de 3 pages sur un fichier HTML ça fait environ 5 mb et c'est trop, ça rend le site vraiment lent.Le code que j'ai maintenant fonctionne pour charger la première page (url) de la liste mais alors il reste juste là. Je pense que cela a à voir avec l'ajout de l'étiquette active à la page réelle à chaque fois, mais je ne sais pas comment le faire, essayé avec quelques codes d'ici, mais ne fonctionne pas. Merci. –