Votre code fonctionne, assurez-vous simplement que #navarrow
est agencé de manière à ce que marginLeft soit important, c'est-à-dire position:absolute
.
<div id="navitem-2" class="activeSlide"></div>
<div id="navarro"
style="width:10px;height:10px;background-color:green;position:absolute;">
</div>
<script>
$(document).ready(function() {
if($('#navitem-2').hasClass("activeSlide")){
$("#navarro").animate({marginLeft:"220px"}, 500);
};
});
</script>
Démo: http://jsfiddle.net/cameronjordan/uwf9y/
Mise à jour en fonction de votre commentaire/exemple:
Le changement de classe et le contrôle ne semble pas être au service des fins dans cet exemple, il est beaucoup plus simple à utiliser en direct événements et déclencher l'animation directement.
http://jsfiddle.net/cameronjordan/pn5sx/3/
<div id="navitem-1" class="slideable"><a href="#">Slide 1</a></div>
<div id="navitem-2" class="slideable"><a href="#">Slide 2</a></div>
<div id="navitem-3" class="slideable"><a href="#">Slide 3</a></div>
<div id="navarro"></div>
<script>
var prevSlideable;
$('.slideable').live('click', function(){
if(prevSlideable != this.id) {
// do you need this activeSlide class anymore?
if(prevSlideable) {
$(prevSlideable).removeClass('activeSlide');
}
$(this).addClass('activeSlide');
prevSlideable = this.id;
$('#navarro').animate({
marginLeft: this.offsetLeft + "px"
}, 500);
}
});
</script>
Si le code nécessaire pour être plus grand que cela, je vous encourage fortement à utiliser des événements personnalisés afin que le code ne se répète pas et vous pouvez garder chaque morceau de code axé sur le moins possible; l'animation est contrôlée à un endroit et déclenchée partout où cela est nécessaire.
Que fait-il? Y a-t-il une erreur? – hunter
Êtes-vous sûr que '# navitem-2' a la classe' activeSlide'?Pouvez-vous poster un lien vers un exemple en direct (ou au moins poster le code HTML associé)? – clarkf
est ce petit "nav # vert" supposé pivoter à gauche puis à droite? alors ça marche pour moi. J'utilise firefox. –