Я пытаюсь изменить src изображения логотипа, если не окно scrollTop и назад с эффектом fadeIn и fadeOut, но даже если вы прокручиваете один раз, fadeIn & Out происходит несколько раз.
Я понял с помощью console.log
, что даже если вы прокручиваете один раз (колесо мыши или стрелки), сообщение регистрируется много раз (например, 8, 10 или 15 раз). Это означает, что логотип всегда мигает более 10 раз, прежде чем изменить src на другое изображение.
jQuery:
$(window).scroll(function () {
if ($(window).scrollTop()) {
$.when($('#navbar').css('padding', '0px')).done(function () {
$('.logo img').fadeOut(400, function () {
$('.logo img').attr('src', 'images/small-logo.png');
console.log('bot');
}).fadeIn();
});
} else {
$.when($('#navbar').css('padding', '20px 0px')).done(function () {
$('.logo img').fadeOut(400, function () {
$('.logo img').attr('src', 'images/top-logo.png');
console.log('top');
}).fadeIn();
});
}
});
HTML:
<div class="col-lg-12">
<div class="col-lg-3 logo no-padding-left">
<a href="index.php">
<img src="images/logo.png"/>
</a>
</div>
<div class="col-lg-9 no-padding-right">
<div class="navbar-header">
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
.
.
.
</ul>
</div>
</div>
</div>
</div>
Я нашел и перепробовал много решений (например, .stop()
, если анимированные и т. д.), но ничего не работало для меня, и я не знаю, почему.
Заранее спасибо.