jQuery 淡出元素,替换内容并淡入

jQuery fade out element, replace content and fade back in

我有一个网站,我正在尝试使用滚动事件来 1)淡出公司名称的文字版本, 2) 用公司徽标的图像文件替换该元素的内容,并且 3) 将徽标淡入淡出。我面临的问题:

我已经尝试了 .animate 和 .fadeIn/.fadeOut 版本的淡入淡出,但仍然没有成功,回调函数正确地替换了元素内容并将其淡入视图中。

我的代码如下:

jQuery(window).scroll(function() {
var scrollTop = $(this).scrollTop();
var data = '<img src="assets/template/images/afl_logo_sm.png" width="135" height="55" alt="AFL">'
console.log('Scroll ', scrollTop);
if (scrollTop >= 250) {
  jQuery('a.navbar-brand').stop().animate({
    opacity: 0.0
  }, 500, function() {
    jQuery('a navbar-brand').html(data).fadeIn('fast');
  });
}
});

感谢您提供的任何帮助,

睡魔

您在 fadein/html 代码中缺少 class 选择器,您正在使用 class 作为后代选择器

jQuery(window).scroll(function () {
    var scrollTop = $(this).scrollTop();
    var data = '<img src="//placehold.it/135X55" width="135" height="55" alt="AFL">'
    if (scrollTop >= 250) {
        jQuery('a.navbar-brand').stop().animate({
            opacity: 0.0
        }, 500, function () {
            jQuery(this).html(data).animate({
                opacity: 1
            });
        });
    }
});

演示:Fiddle

此外,一旦动画完成,我认为进一步滚动不应该重复

var flag = false;
jQuery(window).scroll(function () {
    var scrollTop = $(this).scrollTop();
    var data = '<img src="//placehold.it/135X55" width="135" height="55" alt="AFL">'
    if (scrollTop >= 250) {
        if (!flag) {
            flag = true;
            jQuery('a.navbar-brand').stop().animate({
                opacity: 0.0
            }, 500, function () {
                jQuery(this).html(data).animate({
                    opacity: 1
                });
            });
        }
    }
});

演示:Fiddle

至于滞后,浏览器是单线程应用程序,因此当滚动速度更快时,浏览器可能会花费更多时间根据滚动更新视图,而不是执行处理淡入的脚本