2012-05-22 24 views
8

Con jQuery, estoy tratando de reemplazar el texto, incluido el tramo, dentro de estos enlaces al pasar el mouse. Luego, cuando el control deslizante del usuario está desactivado, el texto original se muestra de nuevo.jQuery reemplazar el texto del elemento al pasar el cursor

<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> 

El resultado final debe ser

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

estoy jugando un poco con el pero no sabe cómo sustituir de nuevo. ¿Algunas ideas?

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

Esto sería mucho más fácil si * todos * los contenidos que se reemplazó estaba dentro de algún elemento. – Jon

+0

¿Necesita que se haga con jQuery o es texto estático? – Paul

+0

http://api.jquery.com/mouseover/#example-0 debería mostrar –

Respuesta

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

que podría salvar el texto original en un atributo data-initialText almacenada en el propio nodo Así que para evitar las variables

+1

que publicó este 43 segundos antes que yo, pero lo curioso es que mi conexión a Internet se redujo por una fracción de segundo cuando hice clic en enviar y tuve para ingresar un captcha cuando lo envié –

+0

+1 para data-initialText –

+0

Personalmente, esto lo reemplaza, pero luego cuando el mouse se apaga, ¡aún conserva el texto nuevo! – Dikeneko

4

Esto debería hacer el truco

$(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

Usted' d necesita almacenarlo en una variable para volver a configurarlo, intente:

var text; 

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

agregar otra función al evento vuelo estacionario como esto:

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

Link de demostración

+0

wow ahora me doy cuenta de lo lento que soy ... y un enlace jsfiddle fue una mala idea aquí: '( – optimusprime619

Cuestiones relacionadas