Ваш код работает, просто убедитесь, что #navarrow
выстроен так, что marginLeft будет иметь значение, т.е. 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>
Демо: http://jsfiddle.net/cameronjordan/uwf9y/
Обновлено на основе вашего комментария / примера:
Изменение и проверка класса, по-видимому, не служат какой-либо цели в этом примере, гораздо проще использовать прямые события и запускать анимацию напрямую.
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>
Если код должен быть больше, чем этот, я настоятельно рекомендую вам использовать пользовательские события, чтобы код не повторялся, и вы могли сосредоточить внимание на каждом фрагменте кода как можно меньше; анимация управляется в одном месте и запускается там, где это необходимо.