Значение this
в вашем обработчике тайм-аута не будет таким, как вы думаете.Добавьте явную переменную:
$('.sliding').mouseenter(function() {
var self = this;
mouseOverTimer = setTimeout(function() {
$(self).find('.text').animate({"top": "0"}, 200);
}, 500);
})
Также вы должны объявить "mouseOverTimer" как локальную переменную за пределами кода установки обработчика (то есть как локальную переменную обработчика "ready") и затем отмените тайм-аут в обработчике "mouseleave":
var mouseOverTimer = null;
$('.sliding').mouseenter(function() {
var self = this;
mouseOverTimer = setTimeout(function() {
$(self).find('.text').animate({"top": "0"}, 200);
}, 500);
})
.mouseleave(function() {
$(this).find('.text').delay(500).animate({"top": "130px"}, 400);
cancelTimeout(mouseOverTimer);
});
Когда я смотрю на это, я почти уверен, что код "mouseleave" не совсем то, что вам нужно;в частности, я думаю, что задержка, вероятно, не нужна.Однако я не уверен на 100% в том, как вы хотите, чтобы все выглядело.