2010-05-31 6 views
5

Donc, j'ai deux divs: # div1 et # div2. Je veux que '# div2' disparaisse quand '# div1' a la valeur CSS: top = 0px.Comment arrêter une animation jquery basée sur les valeurs CSS?

Voici le 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"); 
}); 

Le problème que je suis en cours d'exécution en est que je change la valeur CSS (pour # div1) via Javascript et pour cette raison, mes js ne reconnaît pas la changer et ne fait pas disparaître la div (je pense). Y at-il un moyen de faire disparaître # div2 lorsque la propriété CSS de # div1 est supérieure à 0 et réapparaître quand elle est modifiée? Ou y a-t-il une meilleure façon de mettre en œuvre cela?

Répondre

3

plutôt que d'utiliser cette méthode d'utilisation .position()

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

plus de détails à ce sujet: http://api.jquery.com/position/

+0

Pranay, Merci pour votre réponse. L'alerte créée en utilisant .position donne les valeurs pour left et top pour # div1. Cependant, lorsque ces valeurs sont modifiées par programmation en utilisant Javascript, les nouvelles valeurs ne sont pas enregistrées. J'ai besoin de changer de comportement en fonction de ces nouvelles valeurs. Le problème est toujours de trouver un moyen pour mon script d'attraper ces changements et d'agir sur eux. – kevn

+0

consultez ce lien peut vous aider à atteindre votre objectif http://www.quirksmode.org/js/findpos.html –

1

Essayez ceci pour la fonction clic:

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

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

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

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

afin de refléter le bon positionnement # div1 devrait avoir la position absolue et le parent de # div1 devrait avoir une position relative.

1

Il suffit d'utiliser les callbacks

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