2012-05-22 20 views
8

Z jQuery, próbuję zastąpić tekst, w tym zakres, wewnątrz tych linków po najechaniu kursorem. Następnie, gdy wskaźnik myszy jest wyłączony, oryginalny tekst jest wyświetlany ponownie.jQuery Zastąp tekst elementu na hover

<a class="btn" href="#"> 
    <img src="#" alt=""/> 
    <span>Replace me</span> please 
</a> 

<a class="btn" href="#"> 
    <img src="#" alt=""/> 
    <span>Replace me</span> please 
</a> 

Wyjście końcowe powinno być

<a class="btn" href="#"> 
    <img src="#" alt=""/> 
    I'm replaced! 
</a> 

Ja toying wokół z, ale nie wiem, jak zastąpić go z powrotem. Jakieś pomysły?

$('.btn').hover(function(){ 
    $(this).text("I'm replaced!"); 
}); 
+0

To byłoby o wiele łatwiejsze, jeśli * wszystkie * treść zastępuje się wewnątrz jakiegoś elementu. – Jon

+0

Czy potrzebujesz tego do zrobienia z jQuery, czy jest to tekst statyczny? – Paul

+0

http://api.jquery.com/mouseover/#example-0 powinien pokazać –

Odpowiedz

21
$('.btn').hover(
    function() { 
     var $this = $(this); // caching $(this) 
     $this.data('initialText', $this.text()); 
     $this.text("I'm replaced!"); 
    }, 
    function() { 
     var $this = $(this); // caching $(this) 
     $this.text($this.data('initialText')); 
    } 
); 

można zaoszczędzić oryginalny tekst w atrybucie data-initialText przechowywanych w węźle sama tak aby uniknąć zmiennych

+1

wysłałeś to 43 sekundy przede mną, ale najśmieszniejsze jest to, że mój internet spadł na ułamek sekundy, gdy kliknąłem wyślij i miałem aby wprowadzić captcha, gdy go wysłałem –

+0

+1 dla danych-initialText –

+0

Osobiście to zastępuje, ale gdy mysz się wyłączy, zachowa nowy tekst! – Dikeneko

4

To powinno załatwić sprawę

$(function(){ 
    var prev;  

    $('.btn').hover(function(){ 
    prev = $(this).text(); 
     $(this).text("I'm replaced!"); 
    }, function(){ 
     $(this).text(prev) 
    }); 
}) 
1
$('.btn').hover(function() { 
    // store $(this).text() in a variable  
    $(this).text("I'm replaced!"); 
}, 
function() { 
    // assign it back here 
}); 
0

You” Musimy przechowywać go w zmiennej, aby przywrócić ją do stanu sprzed próby: spróbuj:

var text; 

$(".btn").hover(function() { 
    text = $(this).text(); 
    $(this).text("I'm replaced!"); 
}, 
function() { 
    $(this).text(text); 
}); 
1

dodać kolejną funkcję do zdarzenia najechania tak:

$('.btn').hover(function(){ 
    $(this).text("I'm replaced!"); 
}, function() { 
    $(this).text("Replace me please"); 
}); 

Link na demo

+0

Wow teraz zdaję sobie sprawę, jak powoli jestem ... i link jsfiddle był zły pomysł tutaj: "( – optimusprime619