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

Turbo Frames与jQuery Append兼容问题:页面导航后脚本失效解决方案咨询

解决Turbo Frames切换后jQuery脚本不执行的问题

你的修改思路是正确的——Turbo Frames通过AJAX加载内容时,不会触发传统的$(document).ready事件,因此需要监听Turbo提供的专属事件,确保DOM操作在内容更新后重新执行。

可以优化代码避免重复逻辑,将共用操作抽成独立函数,提升可维护性:

function addSampleText() {
  $('#test').append('<div>Sample Text</div>');
}

// 初始页面加载时执行
$(document).ready(addSampleText);

// Turbo Frame加载完成时执行
$(document).on("turbo:frame-load", addSampleText);

如果需要覆盖所有Turbo驱动的页面更新场景(包括Turbo Drive的页面导航,不只是Frames),可以改用turbo:load事件,它会在初始加载、Turbo导航完成、Turbo Frame加载完成时统一触发:

function addSampleText() {
  $('#test').append('<div>Sample Text</div>');
}

// 覆盖所有Turbo相关的页面加载/更新场景
$(document).on("turbo:load", addSampleText);

关键事件说明

  • turbo:frame-load:仅在单个Turbo Frame的内容加载完成时触发,适合针对性处理Frame内的DOM操作。
  • turbo:load:覆盖初始页面加载、Turbo Drive页面切换、Turbo Frame加载等所有Turbo更新场景,是更通用的事件选择。

上述实现完全符合Turbo的标准事件使用规范,既能保证功能生效,也便于后续代码维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:10:34