2010-04-12 6 views
11

Mi chiedevo se ginocchiera() e fadeIn() potrebbero essere utilizzati in una funzione ...jquery attiva e disattiva in una funzione?

ho ottenuto questo lavoro, ma si affievolisce solo dopo il secondo clic ... non sul primo scatto della commutare.

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

risposta

3

La tua domanda mi confonde un po ', perché .toggle() è fondamentalmente una mostra/nascondi ginocchiera, ma avete fadeIn. L'ipotesi più vicina che ho è che si desidera un fade-ginocchiera, nel qual caso si può fare questo usando animate():

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

Un'altra opzione può essere utile è la diapositiva su e giù con .slideToggle() come questo:

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

È possibile utilizzare il commutatore() per alternare tra un set di funzioni. Quindi, se vuoi che un elemento faccia sbiadisci e sbiadisce ogni altro clic, disponi di un controllo a due funzioni: la dissolvenza e la dissolvenza. Come questo:

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

noti che questo metodo firma è stata rimossa dal jQuery come di 1,9: http://jquery.com/upgrade-guide/1.9/# toggle-function-function-removed – Zhihao

19

Poiché jQuery 1.4.4 c'è una nuova funzione per questa chiamata .fadeToggle()

Jquery fadeToggle

1

Molto meglio a dare una funzione personalizzata in fondo jquery.js:

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

Poi puoi chiamare così:

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

Esiste già! :) - http://api.jquery.com/fadeToggle/ – nbrooks

0

Ve ry semplice

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

Ha chiesto specificamente fadeIn(); slideToggle() è ciò che fa già. – GFoley83