Je travaille sur un site comportant plusieurs sections, chacune comportant environ 5 à 10 projets. J'essaie de créer une navigation suivante/précédente qui vous permettra de faire défiler les projets dans chaque section. C'est le code que j'ai eu pour cela:Création de la navigation suivante/précédente
var prev_li = $('.projects ul li.selected').prev('li'),
prev_href = $(prev_li).children().attr('href'),
next_li = $('.projects ul li.selected').next('li'),
next_href = $(next_li).children().attr('href');
$('#previous-project').click(function(e){
if ($(prev_li).length) {
window.location = prev_href;
return false;
} else {
window.location = last_href;
return false;
}
});
Et puis la même chose pour le prochain projet. Mon problème est qu'il y a des projets en double (certains projets sont dans plusieurs sections). Cela signifie que plusieurs projets ont la même URL et que certains projets obtiendront la classe "selected" quand ils ne sont pas vraiment sélectionnés. Cela signifie que lorsque vous êtes sur un projet qui est en section multiple et que vous cliquez sur le bouton suivant ou précédent, il ira au projet précédent à partir de la première instance du projet (même si c'est dans une autre section). J'ai besoin d'un moyen efficace de spécifier la liste des projets dans chaque section et donc il tourne seulement à travers ces projets.
Une idée que j'avais été d'ajouter une classe à chaque liste de projets et faire quelque chose comme ceci:
var traeng_prev_li = $('.transportation-engineering.projects ul li.selected').prev('li'),
traeng_prev_href = $(traeng_prev_li).children().attr('href'),
traeng_next_li = $('.transportation-engineering.projects ul li.selected').next('li'),
traeng_next_href = $(traeng_next_li).children().attr('href');
// same variables for each section
$('#previous-project').click(function(){
if ($(traeng_prev_li).length) {
window.location = traeng_prev_href;
return false;
} else if ($(struct_prev_li).length) {
window.location = struct_prev_href;
return false;
} else if ($(civil_prev_li).length) {
window.location = civil_prev_href;
return false;
} else if ($(archi_prev_li).length) {
window.location = archi_prev_href;
return false;
.... //all the way down through all the sections
Le problème est a) il est terriblement inefficace et b) je pense que même si vous ne sont pas sur cette liste, il a encore une longueur et donc le problème persiste toujours?
D'accord, je crois que cela fait sens. Donc, sur chacune des pages générales du projet, j'ajouterais la fin appropriée aux liens de la barre latérale? Ensuite, je voudrais changer le code pour être ce que vous avez ci-dessus. Cela éliminerait-il le besoin de répéter le code pour chaque section? Je suppose que je comprends le concept, mais comment vous avez exécuté n'a pas beaucoup de sens pour moi. Qu'est-ce que le code dans $() sélectionne? Comment cela sélectionnera-t-il le bon li? – Andrew
@andrew Oui, les urls de votre projet devraient avoir la partie '#' ajoutée.J'ai également mis à jour ma réponse avec un peu plus d'info .. –
Cela a un sens parfait. Je vous remercie beaucoup pour votre aide! – Andrew