2012-03-28 12 views
5

Tengo un problema con el botón fade, funciona cuando el div está visible para comenzar y el enlace "Show QR" cambia a "Hide QR". Enlace "Ocultar QR" se debe pulsar y div oculto, pero enlace de texto no cambia a "Mostrar QR"jQuery: fadeToggle() muestra/oculta el texto del enlace no cambia

html:

<a class="emotTab" id="qrshow" href="javascript:void(0);">Show QR</a> 
<div id="div_showqr">Content.....</div> 

javasctipt:

$("#qrshow").click(function(){ 
$("#div_showqr").fadeToggle('slow'); 
    $('#qrshow').text($('#div_showqr').is(':visible')? 'Hide QR' : 'Show QR'); 
$('#qrshow').text($('#div_showqr').is('display:none')? 'Show QR' : 'Hide QR'); 
}); 
+0

¿Por qué estás ajustes de texto() en 2 diferentes líneas? Quite la tercera línea (con is (': visible') –

Respuesta

4

jsBin demo

$("#qrshow").click(function(){ 
    $("#div_showqr").fadeToggle(function(){ 
    $('#qrshow').text($(this).is(':hidden')? 'Show QR' : 'Hide QR'); 
    }); 
}); 

Tenemos que comprobar que es la visibilidad en una función de devolución de llamada - después de la fadeToggle ha terminado. De lo que funcionará

ahora se puede utilizar también:

$('#qrshow').text($(this).is(':visible')? 'Hide QR' : 'Show QR'); 
+0

thx brother es el trabajo :) –

+0

@ user1297435 ¡Me alegro de poder ayudar! Gracias. –

0

probar esto

$('#qrshow').text($('#div_showqr').is(':hidden')? 'Show QR' : 'Hide QR'); 
0

cambiar esta línea:

$('#qrshow').text($('#div_showqr').is('display:none')? 'Show QR' : 'Hide QR'); 

a:

$('#qrshow').text($('#div_showqr').is(':hidden')? 'Show QR' : 'Hide QR'); 
1

Prueba esto:

html:

<div id="qrshow" class="emotTab">Show Qr</div> 
<div id="div_showqr">Content.....</div> 

javascript:

$(document).ready(function() { 
$('#qrshow').click(function(){ 
text = $(this).text(); 

$('#div_showqr').fadeToggle('slow'); 

if(text =='Show QR'){ 
    $(this).text('Hide QR'); 
} else { 
    $(this).text('Show QR'); 
} 
}); 
}); 
Cuestiones relacionadas