2010-08-23 6 views
4

Pourquoi ce petit morceau de code jQuery ne fonctionne pas sur Internet Explorer? Cela fonctionne très bien dans tous les navigateurs Webkit.Compatibilité Jquery Internet Explorer (bascule et anime)

$('#logo').toggle(function() { 
    $('#about').animate({'top': '-400px'},'slow'); 
}, function() { 
    $('#about').animate({'top': '0px'},'slow'); 
}); 

CSS:

#logo { 
    margin:-55px auto 0 auto; 
    cursor:pointer; 
} 

#about { 
    width:100%; 
    height:200px; 
    position:fixed; 
    top:0px; 
    z-index: 3000; 
} 

HTML

<div id="header"> 
    <div id="about">     
    <p>test</p> 
    <img id="logo2" src="assets/img/logokleinhover.png" alt="Logo" /> 
    </div> 
</div> 
+0

Comment le html et le css sont-ils configurés? – Nalum

+3

vous n'avez rien là avec l'ID du logo ... – Patricia

+0

"enlevé les hashtags" - pourquoi? –

Répondre

0

Comme Nalum dit une image moins 400px en hauteur disparaîtra et irrécupérables. Mais ce morceau de code fonctionne dans IE 7 et IE 8 pour moi:

<!DOCTYPE html> 
<html><head> 
<script type="text/javascript" src="jquery-1.4.2.js"></script> 
<style> 
#logo { 
    margin:-55px auto 0 auto; 
    cursor:pointer; 
} 
#about { 
    width:100%; 
    height:200px; 
    position:fixed; 
    top:0px; 
    z-index: 3000; 
} 
</style> 
</head> 
<body> 
<div id="header"> 
    <div id="about"> 
    <p>test</p> 
    <img id="logo" src="test.bmp" alt="Logo" /> 
    </div> 
</div> 
<script language='javascript'> 
    $('#logo').toggle(
    function(){ 
     $('#about').animate({'top': '-400px'},'slow'); 
    }, 
    function(){ 
     $('#about').animate({'top': '0px'},'slow'); 
    }); 
</script></body></html> 

Une chose à noter pour une raison quelconque, le script doit être en dessous du html, il influencera. J'ai remarqué que c'est vrai dans le examples et quand j'essaye de placer le script n'importe où au-dessus des étiquettes qu'ils influencent cela ne fonctionnera pas. Il y a quelques commentaires que cela ne fonctionne pas tout à fait pour IE7 mais dans cet exemple ce n'était pas le cas pour moi.

+0

Pour que cela fonctionne au-dessus du code HTML, vous devez placer le javascript dans '$ (document) .ready (function() {.....});' – Nalum

2

Si vous placez votre code dans un $ (document) .ready() au bas de votre page html. Il réduit beaucoup des problèmes que j'ai avec js dans IE. Comme Jack a dit, il est préférable de mettre votre javascript après le HTML, il a des effets.

<script> 
$.ready(function(){ 
    $('#logo').toggle(function() { 
     $('#about').animate({'top': '-400px'},'slow'); 
    }, function() { 
     $('#about').animate({'top': '0px'},'slow'); 
    }); 
}); 
</script> 
Questions connexes