2010-10-08 5 views
2

J'essaye d'écrire un script qui me permettra de changer le css du li précédent sur le vol stationnaire.jquery trouver li précédent et changer css

est ici la structure:

<ul id="mainlevel"> 
    <li><a href="/" class="mainlevel" id="active_menu">Home</a></li> 
    <li><a href="/" class="mainlevel">About Us</a></li> 
    <li><a href="/" class="mainlevel">Products</a></li> 
    <li><a href="/" class="mainlevel">Projects</a></li> 
    <li><a href="/" class="mainlevel">Suppliers</a></li> 
</ul> 

Voici ce que j'ai jusqu'à présent:

jQuery("#mainlevel li a").hover(function() { 
    jQuery(this).prev("li a").css("background", "#f0f"); 
    }); 

Mais cela ne fonctionne pas .. Toute aide serait appréciée :)

+0

Sans tester quoi que ce soit, avez-vous essayé de supprimer le 'a' de' .prev ('li a') '? –

+0

oui, je n'ai pas de chance avec ça – SoulieBaby

+1

Voulez-vous manipuler le li qui était précédemment plané, ou le li qui précède l'élément planant dans le document? – babtek

Répondre

4

Voici semble travail:

$(document).ready(
    function() { 
    $('li a').hover(
     function(){ 
     $(this).parent().prev('li').css('background-color','#f0f'); 
     } 
    ); 
    } 
); 

Bien que je n'ai pas supprimé les couleurs d'arrière-plan lorsque le li n'est plus plané.

Démonstration: JS Bin.

+1

@SoulieBaby, après avoir posté cette réponse, il me vient à l'esprit de demander: êtes-vous sûr de vouloir changer l'arrière-plan du 'li', et * not * l'arrière-plan de l'élément enfant' a'? –

+0

Oh c'était pour changer le a, mais j'ai utilisé ce que vous m'aviez donné et ajouté .find ("a") pour que ça marche pour moi, merci! :) – SoulieBaby

3

Pouvez-vous essayer

jQuery(this).parent().prev("li").children("a").css("background", "#f0f"); 

Je pense que les méthodes de prev() fonctionne avec seulement les frères et sœurs de l'élément courant. c'est pourquoi vous devez obtenir le parent de l'élément en cours et obtenir l'élément prev

Questions connexes