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

如何在通过编程方式添加jQuery到DOM后继续执行.js代码?

编程式加载jQuery后执行后续代码的方案

当你通过动态创建<script>标签的方式加载jQuery时,由于脚本加载是异步的,直接在加载代码后写依赖jQuery的逻辑会失败——因为此时jQuery还未完成下载和执行。下面是几种可靠的解决方式:

方法1:利用脚本的onload事件直接执行代码

在动态创建的script标签上绑定onload事件,该事件会在jQuery脚本加载并执行完成后触发,此时就能安全使用jQuery了:

// 动态加载jQuery的自执行函数
(function() {
  const jqueryScript = document.createElement('script');
  // 替换为你需要的jQuery版本地址
  jqueryScript.src = 'https://code.jquery.com/jquery-3.7.1.min.js';
  
  // 脚本加载完成后执行依赖代码
  jqueryScript.onload = function() {
    // 这里可以放心使用jQuery
    $(window).on('load', function() {
      console.log('jQuery已就绪,开始执行业务代码');
      // 你的业务逻辑写在这里
      $('body').css('background-color', '#f0f0f0');
    });
  };

  // 处理加载失败的情况
  jqueryScript.onerror = function() {
    console.error('jQuery加载失败,请检查地址是否正确');
  };

  document.head.appendChild(jqueryScript);
})();

方法2:封装初始化函数,在加载完成后调用

把依赖jQuery的逻辑封装成独立函数,在onload事件中调用,代码结构更清晰,便于维护:

// 封装依赖jQuery的初始化逻辑
function initMyApplication() {
  $(window).on('load', function() {
    // 这里写你的业务代码
    $('#app-container').append('<h1>应用初始化完成</h1>');
  });
}

// 动态加载jQuery
(function() {
  const jqueryScript = document.createElement('script');
  jqueryScript.src = 'https://code.jquery.com/jquery-3.7.1.min.js';
  
  // 加载完成后调用初始化函数
  jqueryScript.onload = initMyApplication;
  jqueryScript.onerror = () => console.error('jQuery加载失败');

  document.head.appendChild(jqueryScript);
})();

方法3:用Promise封装加载过程(现代JS写法)

如果你的项目使用现代JavaScript特性,可以用Promise封装jQuery的加载过程,支持链式调用或async/await,写法更优雅:

// 封装加载jQuery的Promise函数
function loadjQuery() {
  return new Promise((resolve, reject) => {
    const jqueryScript = document.createElement('script');
    jqueryScript.src = 'https://code.jquery.com/jquery-3.7.1.min.js';
    
    jqueryScript.onload = () => resolve(window.jQuery);
    jqueryScript.onerror = () => reject(new Error('jQuery加载失败'));
    
    document.head.appendChild(jqueryScript);
  });
}

// 方式A:链式调用
loadjQuery().then($ => {
  $(window).on('load', function() {
    console.log('jQuery版本:', $.fn.jquery);
    // 业务逻辑
  });
}).catch(err => {
  console.error(err.message);
});

// 方式B:async/await(需在async函数中使用)
async function initApp() {
  try {
    const $ = await loadjQuery();
    $(window).on('load', function() {
      // 业务逻辑
    });
  } catch (err) {
    console.error(err);
  }
}
initApp();

关键原理

动态加载脚本是异步操作,浏览器会在后台下载脚本,同时继续执行后续代码。只有当脚本下载完成并执行后,onload事件才会触发,此时window.jQuery和$变量才会被定义,依赖它们的代码才能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:51:56