You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery无法选中.pizza-menu-left类元素实现滚动动画该如何解决?

问题原因

.pizza-menu-left类元素属于menu.html内的内容,而jQuery的load()是异步网络请求方法,你在页面初始化时直接执行$(".pizza-menu-left")选择元素的代码时,menu.html还没完成请求和DOM插入,所以选中的是空对象,后续的类名操作自然全部无效。你之前尝试的live()、事件委托on()无效的原因是:事件委托仅适用于处理元素本身触发的事件(比如点击、输入事件),而本次逻辑绑定的是window的滚动事件,不存在事件委托的适用场景。

解决方法

方案1:将动画逻辑放入load的回调函数(推荐)

load()方法支持传入回调函数,该函数会在对应HTML片段加载完成、且完全插入当前页面DOM后自动执行,此时选中元素必然存在。
修改后的完整代码如下:

$(() => { 

  /*  Components */
  $(".navbar_section").load("../components/navbar.html");
  $(".title_section").load("../components/title.html");
  $(".welcome_section").load("../components/welcome.html");
  $(".trust_section").load("../components/trust.html");
  // 为menu的load方法添加回调
  $(".menu_section").load("../components/menu.html", function() {
    var pizzaLeft = $(".pizza-menu-left");
    $(window).on("scroll", () => {
      var scroll = $(window).scrollTop();
      if (scroll >= 1500) {
        pizzaLeft.removeClass("roll-out-left").addClass("roll-in-left");
      } else {
        pizzaLeft.removeClass("roll-in-left").addClass("roll-out-left");
      }
    });
  });
  $(".parallax_section").load("../components/parallax.html");
  $(".location_section").load("../components/location.html");
  AOS.init();
});

方案2:滚动时实时查询元素

如果不想改动load的结构,也可以在每次触发滚动事件时再查询元素,未加载完成时直接跳过操作即可:

$(() => { 

  /*  Components */
  $(".navbar_section").load("../components/navbar.html");
  $(".title_section").load("../components/title.html");
  $(".welcome_section").load("../components/welcome.html");
  $(".trust_section").load("../components/trust.html");
  $(".menu_section").load("../components/menu.html");
  $(".parallax_section").load("../components/parallax.html");
  $(".location_section").load("../components/location.html");
  AOS.init();

  /*  Animations */
  $(window).on("scroll", () => {
    var scroll = $(window).scrollTop();
    // 滚动时实时查询元素
    var pizzaLeft = $(".pizza-menu-left");
    // 元素未加载完成则直接返回
    if (pizzaLeft.length === 0) return;
    if (scroll >= 1500) {
      pizzaLeft.removeClass("roll-out-left").addClass("roll-in-left");
    } else {
      pizzaLeft.removeClass("roll-in-left").addClass("roll-out-left");
    }
  });
});

内容的提问来源于stack exchange,提问作者Marshall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:18:01