2010-04-12 11 views
11

Me preguntaba si alternar() y fadeIn() podría utilizarse en una función ...jquery alternar y fundir en una función?

tengo esto a trabajar, pero solo se desvanece después del segundo clic ... no en el primer clic de la palanca.

$(document).ready(function() { 

$('#business-blue').hide(); 

    $('a#biz-blue').click(function() { 
    $('#business-blue').toggle().fadeIn('slow'); 
    return false; 
    }); 

// hides the slickbox on clicking the noted link 

    $('a#biz-blue-hide').click(function() { 
    $('#business-blue').hide('fast'); 
    return false; 
    }); 


}); 



    <a href="#" id="biz-blue">Learn More</a> 
     <div id="business-blue" style="border:1px soild #00ff00; background:#c6c1b8; height:600px; width:600px; margin:0 auto; position:relative;"> 
      <p>stuff here</p> 
     </div> 

Respuesta

3

Su pregunta me confunde un poco, porque es básicamente un .toggle() mostrar/ocultar palanca, pero hay que fadeIn. La conjetura más cercano que tengo es que desea un fundido de palanca, en cuyo caso se puede hacer esto utilizando animate():

$('#business-blue').animate({opacity: 'toggle'}, 800); 

Otra opción es posible que desee es el desplazamiento hacia arriba y hacia abajo usando .slideToggle() así:

$('#business-blue').slideToggle('slow'); 
12

Puede alternar() para alternar entre un conjunto de funciones. Por lo tanto, si desea que un elemento se desvanezca y se desvanezca cada dos o tres clics, tenga las dos funciones de control de alternancia: fadeIn y fadeOut. De esta manera:

$('a#biz-blue').toggle(function() { 
    $('#business-blue').fadeIn('slow'); 
    return false; 
    }, 
function() { 
    $('#business-blue').fadeOut('slow'); 
    return false; 
    }); 
+1

http://api.jquery.com/toggle/ – Jonathan

+2

Tenga en cuenta que esta firma método ha sido retirado de jQuery como de 1,9: http://jquery.com/upgrade-guide/1.9/# toggle-function-function-removed – Zhihao

1

Mucho mejor que escribir una función personalizada en la parte inferior de jquery.js:

jQuery.fn.fadeToggle = function(speed, easing, callback) { 
    return this.animate({opacity: 'toggle'}, speed, easing, callback); 
}; 

Entonces puede llamarlo así:

$('#hiddenElement').fadeToggle('fast'); 
+0

¡Ya existe! :) - http://api.jquery.com/fadeToggle/ – nbrooks

0

Ve ry sencilla

$("a#biz-blue").live('click',function(){ 
    $('#business-blue').slideToggle(200); 
}); 
+0

Preguntó por fadeIn() específicamente; slideToggle() es lo que ya hace. – GFoley83