2013-08-18 7 views
0

Je suis en train de changer un élément de navigation de « ME » à <ME> sur vol stationnaire à l'aide JQuery. Voici ce que j'essaie: JSBin exampleModifier texte sur Hover en utilisant JQuery

Cependant, il est en permanence cacher mon texte original. Est-ce que quelqu'un a une idée de ce que je fais mal? (Je suis super nouvelle pour JQuery/JS en général)

+0

Puis-je demander exactement ce que vous essayez de faire avec vos éléments de liste dans cet exemple? Juste ajouter un état hover à chacun? –

Répondre

3

DEMO

essayer. J'ai modifié votre code

$(function() { 
    var text; 
    $("#topnav li ").hover(
    function() { 
     text=$(this).find("a").text(); 
    $(this).find("a").text($(this).attr('full')); 
    }, 
    function() { 
     $(this).find("a").text(text); 
    } 
); 
}); 

Hope this helps vous

5

Cas classique de no js required, vous pouvez utiliser des classes CSS pseudo, spécifiquement:

  • :hover
  • :before
  • :after

Example

li a:before { 
    content: "<"; 
    display: none; 
} 

li a:after { 
    content: ">"; 
    display: none; 
} 

li a:hover:before { 
    display: inline; 
} 

li a:hover:after { 
    display: inline; 
} 
+1

Cela dépend les exigences du navigateur de OP (ne pas mentionner les noms ...) [caniuse] (http://caniuse.com/css-gencontent) – dc5

+1

C'est vrai, mais je pense qu'il est sûr de dire que le soutien du navigateur pour IE7 est un Exigence de plus en plus exotique. – nirazul

+0

Je suis d'accord - juste pensé que je mentionnerais dans le cas où l'OP a une raison valable pour demander une solution jQuery/Javascript. – dc5

1

Merci Je suis d'accord avec @Nirazul, si vous pouvez, optez pour une solution pure css.

Si vous ne pouvez pas, rappelez-vous que vous êtes:

  1. obtenir la valeur d'un attribut a la li
  2. remplaçant le texte du lien à l'intérieur de la li sélectionné avec son contenu
  3. inverser l'opération sur handlerOut

Alors:

$(function() { 
    $("#topnav li").hover(
    function() { 
     var myLi = $(this); 
     myLi.attr('small', $('a', myLi).text()); 
     $('a', myLi).text(myLi.attr('full')); 
    }, 
    function() { 
     var myLi = $(this); 
     $('a',myLi).text(myLi.attr('small')); 
    } 
); 
}); 

Mise à jour example.

Questions connexes