2010-05-31 3 views
5

Quindi, ho due div: # div1 e # div2. Voglio che "# div2" scompaia quando "# div1" ha il valore CSS: top = 0px.Come posso interrompere un'animazione jquery basata su valori CSS?

Ecco il CSS:

#div1 { 
    top: 0px; 
} 
#div2 { 
    display: block; 
} 
if ($('#div1').css('top') == '0px') { 
    $("#div2").hide(); 
} else { 
    $("div2").fadeIn(); 
} 
$("div2").click(function(){ 
     $("#div1").animate({top:"+=315px"}, "slow"); 
}); 

Il problema che sto funzionando in è che sto cambiando quel valore CSS (per # div1) tramite Javascript e per questo motivo, il mio js non riconosce il cambia e non fa sparire il div (penso). C'è un modo per far sparire # div2 quando la proprietà CSS di # div1 top = 0 e riappare ogni volta che viene cambiata? O c'è un modo migliore per implementare questo?

risposta

3

piuttosto che utilizzare questo metodo uso .position()

<script> 
var p = $("#div1"); 
var position = p.position(); 
alert("left: " + position.left + ", top: " + position.top); 
</script> 

maggiori dettagli su questo: http://api.jquery.com/position/

+0

Pranay, Grazie per la risposta. L'avviso creato usando .position mostra i valori per left e top per # div1. Tuttavia, quando questi valori vengono modificati a livello di codice utilizzando Javascript, i nuovi valori non vengono registrati. Devo cambiare comportamento in base a questi nuovi valori. Il problema è ancora trovare un modo per il mio script di cogliere queste modifiche e agire su di esse. – kevn

+0

controlla questo link può aiutarti a raggiungere il tuo obiettivo http://www.quirksmode.org/js/findpos.html –

1

Prova questa per la funzione click:

$("div2").click(function(){ 

     $("#div1").parent().css({postion,"relative"}); 

     $("#div1").css({postion,"absolute"}); 

     $("#div1").animate({top:"+=315px"}, "slow"); 
}); 

al fine di riflettere il corretto posizionamento # div1 dovrebbe avere posizione assoluta e parent di # div1 dovrebbe avere posizione relativa.

1

Basta utilizzare le richiamate

#div1 { 
    top: 0px; 
} 
#div2 { 
    display: block; 
} 

$("div2").click(function(){ 
     $("#div1").animate({top:"+=315px"}, "slow", function(){ 
      if($('#div1').position().top < 1){ 
        $('#div1').hide(); 
      }else{ 
        $('#div1').fadeIn('slow'); 
      } 
     }); 
});