Я предполагаю, что вы столкнулись с наращиванием в очереди анимации. Чтобы предотвратить это, вызовите stop () перед любыми дополнительными вызовами анимации.
Ваш отредактированный код (обратите внимание на добавление stop()
перед каждым fadeTo()
):
$('.divImage').mouseenter(function () {
var vl = $('#viewlink');
var vlpos = $(this).position();
vl.css({ 'top': (vlpos.top + ($(this).height() - vl.height())), 'left': vlpos.left, position: 'absolute' });
vl.stop(true,true).fadeTo('1', 0.5);
vl.css('display', 'block');
});
$('.divImage').mouseleave(function (event) {
if (event.toElement.id != 'viewlink') {
var vl = $('#viewlink');
vl.stop(true,true).fadeTo('1', 0.0, function () {
vl.css('display', 'block');
});
}
});
$('#viewlink').mouseleave(function (event) {
$(this).stop(true,true).fadeTo('1', 0.0, function () {
$(this).css('display', 'block');
});
});