2010-03-25 7 views
1

Je développe un menu. Ce menu, va changer l'image d'arrière-plan lorsque vous cliquez sur un lien, comme presque tous les menus le font. Si je clique sur un lien du menu, l'arrière-plan du lien changera la couleur.jQuery comportement de clic

Mon script jQuery est:

$(function() { 
$('#menu ul li').click(function() { 
    $('#menu ul li').removeClass("current_page_item"); 
    $(this).addClass("current_page_item"); 
    //return false; 
}); 
}); 

Aujourd'hui, avec le « return false » a commenté, lorsque je clique sur le lien sous « #menu ul li » il change l'arrière-plan ouvrir la nouvelle page et l'arrière-plan est réinitialisé. Pour sûr, si je décommenter le return false, l'arrière-plan fonctionne bien, mais je ne peux pas ouvrir de liens. Il semble donc que j'ouvre une nouvelle page, cela réinitialise les classes. Comment puis-je le rendre persistant?

Répondre

3

Les classes ajoutées dynamiquement ne persisteront pas entre les chargements de page. Envisagez d'utiliser du code côté serveur pour ajouter la classe current_page_item selon les besoins.

1

Vous voudrez faire cela après la page charge plutôt qu'auparavant. Vous pouvez le faire côté serveur comme Jud suggère ou utiliser un script jQuery comme celui ci-dessous. Ce petit script a été ma méthode préférée récemment.

var path = location.pathname.substring(1); 
if(path){ 
    $('#menu a[href="' + path + '"]').attr('class', 'current'); 
    $('#subnav a[href="' + path + '"]').attr('class', 'current'); 
}