Частично проблема может заключаться в том, что анимация определяется как дельта (- = 100px).Если эта анимация активируется несколько раз, она продолжит ползти вверх по вашему div.Я понимаю, что вы пытаетесь предотвратить многократную активацию анимации.Я был в состоянии перекодировать, используя абсолютные позиции.Я не вижу проблем.Проверьте это здесь:
http://jsfiddle.net/waDVX/
Вот код:
HTML
<div class="spotlight" data-who="staff">
<div class="caption">
<h1>Lipsum</h1>
<p> There are many variations of passages of Lorem Ipsum available</p>
</div>
</div>
<div class="spotlight" data-who="student">
<div class="caption">
<h1>Test</h1>
<p>testtestt estte stte sttest testte sttesttestt esttestte sttest</p>
</div>
</div>
CSS
* {
margin:0;
padding:0;
}
.spotlight {
position:relative;
overflow:hidden;
width:270px;
float:left;
margin:20px;
height:240px;
background:#008ad0;
}
.caption {
position:relative;
opacity: 0.8;
padding:10px;
background:#000;
color:#fff;
}
jQuery
$(function() {
$('.spotlight').each(function() {
var spot = $(this);
var spotHeight = spot.outerHeight();
var caption = $(".caption", spot);
var height = caption.outerHeight();
var top2 = spotHeight - height;
var top1 = spotHeight;
caption.css({top:top1});
spot.hover(function() {
caption.stop().animate({ top:top2 }, 150);
}, function() {
caption.stop().animate({top:top1}, 150);
});
});
});
Примечание. Я удалил загрузку подписей AJAX для простоты.