jQuery .css ("margin-top", valeur) ne se met pas à jour dans IE 8 (mode Standards)

Je suis en train de construire un suivi automatique des div qui est lié à l' $(window).de défilement() de l'événement. Voici mon code JavaScript.

var alert_top = 0;
var alert_margin_top = 0;

$(function() {
  alert_top = $("#ActionBox").offset().top;
  alert_margin_top = parseInt($("#ActionBox").css("margin-top"));

  $(window).scroll(function () {
    var scroll_top = $(window).scrollTop();
    if(scroll_top > alert_top) {
      $("#ActionBox").css("margin-top", ((scroll_top-alert_top)+(alert_margin_top*2))+"px");
      console.log("Setting margin-top to "+$("#ActionBox").css("margin-top"));
    } else {
      $("#ActionBox").css("margin-top", alert_margin_top+"px");
    };
  });
});

Ce code suppose qu'il y a cette règle CSS en place

#ActionBox {
  margin-top: 15px;
}

Et il faut un élément avec l'id "ActionBox" (dans ce cas, un div). La div est placé dans une aligné à gauche du menu qui s'exécute sur le côté, il est donc décalage de départ est d'environ 200 px). L'objectif est de commencer à ajouter pour le margin-top de la valeur une fois que l'utilisateur est déjà passé le point où la div pourrait commencer à disparaître en haut de la fenêtre d'affichage du navigateur (oui, je sais que le paramètre de position: fixe ferait la même chose, mais alors il serait occulter le contenu ci-dessous la ActionBox mais toujours dans le menu).

Maintenant la console.journal indique que l'événement est déclenché à chaque fois qu'il le devrait, et c'est le réglage de la valeur correcte. Mais dans certaines pages de mon application web la div n'est pas redessiné. C'est surtout bizarre parce que dans d'autres pages (dans IE) le code fonctionne comme prévu (et il travaille tout le temps dans FF, Opera et WebKit). Toutes les pages évaluer (0 erreurs et avertissements 0 selon le validateur du W3C et de l'FireFox HTMLTidy Validator), et pas de JS erreurs sont jetés (selon l'IE Barre d'outils du Développeur et Firebug). Une autre partie de ce mystère, si je désélectionner l' #ActionBox margin-top règle dans le code HTML de Style explorer dans internet explorer Outils de développement puis la div saute immédiatement en arrière de la nouvellement réglé place qu'elle devrait avoir si le défilement événement a déclenché une redessiner. Aussi, si je me force à IE8 en Mode Quirks, ou le mode de compatibilité puis la même déclenche une mise à jour.

Une chose de Plus, il fonctionne comme prévu dans IE7 et IE 6 (grâce à la merveilleuse IETester pour qu')

source d'informationauteur Jason Sperske