2012-05-22 4 views
8

С jQuery, я пытаюсь заменить текст, включая span, внутри этих ссылок при наведении. Затем, когда пользователь наводится, исходный текст отображается снова.jQuery заменить текст элемента на 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> 

Конечный результат должен быть

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

Я играл вокруг с, но не знаете, как заменить его обратно. Есть идеи?

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

Это было бы гораздо проще, если * все * содержание заменить было внутри какого-либо элемента. – Jon

+0

Вам нужно это сделать с помощью jQuery или это статический текст? – Paul

+0

http://api.jquery.com/mouseover/#example-0 должен показать вам –

ответ

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')); 
    } 
); 

вы можете сохранить исходный текст в атрибуте data-initialText, хранящейся в самом узле так, чтобы избежать переменные

+1

вы отправили это за 43 секунды до меня, но самое смешное, мой интернет пошел вниз на долю секунды, когда я нажал отправить, и я для ввода captcha, когда я отправил его –

+0

+1 для data-initialText –

+0

Лично это заменит его, но затем, когда мышь погаснет, он по-прежнему сохраняет новый текст! – Dikeneko

4

Это должно сделать трюк

$(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» d необходимо сохранить его в переменной, чтобы вернуть его к тому, что было, попробуйте:

var text; 

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

добавить еще одну функцию к событию парения, как это:

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

Link для демонстрации

+0

wow теперь я понимаю, как медленно я ... и ссылка jsfiddle была плохой идеей здесь: '( – optimusprime619