SmoothState.Js 页面更改后重新初始化页面脚本

2023-12-08

我使用 SmoothState.js 进行页面转换,它工作正常并使用 ajax 加载新页面。然而,我在每个页面上都有需要重新初始化的 JS 脚本,并且我无法让它们始终出现在页面转换中。

根据常见问题解答:

smoothState.js 提供了 onAfter 回调函数,可以让你 重新运行您的插件。如果您不熟悉的话,这可能会很棘手 AJAX 是如何工作的。

当你在 $(document).ready() 上运行插件时,它将注册 仅适用于当前页面上的元素。由于我们正在注入 每次加载新元素,我们需要再次运行插件,确定其范围 只是新东西。

一个好方法是将插件初始化包装在 我们在 $.fn.ready() 和 onAfter 上调用的函数。你会想要 每次初始化插件时指定上下文,以便您 不要双重绑定它们。这称为“模块执行 控制器”。

我的计划是从 JS 文件中获取函数并将它们全部放入 SmoothState.js 文件内的 onAfter 调用中。这样,每次用户更改页面时,这些功能始终可用。

这是我现在的代码结构。我已经做了很多挖掘,但我被困住了。你能帮我弄清楚我做错了什么吗?谢谢你的时间!

$(document).ready(function() {
    mail();

});

$('#main').smoothState({
    onAfter: function() {
        mail();
    }
});

function mail() {
    // script from mail.js goes here
}

$(function() {
    $('#main').smoothState();
});

$(function() {
    "use strict";
    var options = {
            prefetch: true,
            pageCacheSize: 3,
            onStart: {
                duration: 250, // Duration of our animation 
                render: function($container) {
                    // Add your CSS animation reversing class 

                    $container.addClass("is-exiting");


                    // Restart your animation 
                    smoothState.restartCSSAnimations();
                }
            },
            onReady: {
                duration: 0,
                render: function($container, $newContent) {
                    // Remove your CSS animation reversing class 
                    $container.removeClass("is-exiting");

                    // Inject the new content 
                    $container.html($newContent);


                }

            },

        },
        smoothState = $("#main").smoothState(options).data("smoothState");
});

通过将 onAfter 脚本移动到主 smoothstate 函数中(删除其他 smoothstate 函数),我设法在代码末尾运行一个单独的函数。在浏览器刷新的情况下,也可以在文档就绪时运行您的函数。如果它与您的代码工作相同,则如下所示:

$(document).ready(function() {
        mail();

    });

    function mail() {
        // script from mail.js goes here
    }

    $(function() {
        "use strict";
        var options = {
                prefetch: true,
                pageCacheSize: 3,
                onStart: {
                    duration: 250, // Duration of our animation 
                    render: function($container) {
                        // Add your CSS animation reversing class 

                        $container.addClass("is-exiting");


                        // Restart your animation 
                        smoothState.restartCSSAnimations();
                    }
                },
                onReady: {
                    duration: 0,
                    render: function($container, $newContent) {
                        // Remove your CSS animation reversing class 
                        $container.removeClass("is-exiting");

                        // Inject the new content 
                        $container.html($newContent);


                    }

                },
                onAfter: function() {
                    mail();
                }
            },
            smoothState = $("#main").smoothState(options).data("smoothState");
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SmoothState.Js 页面更改后重新初始化页面脚本 的相关文章

随机推荐

  • Swift Admob 控制台显示模拟器设备 ID,但在 iPhone 上运行时不显示?

    我已经在我的项目中实现了 Admob 但是我无法为我的 iPhone 添加测试设备 ID 这是代码 let request GADRequest myAd GADInterstitial adUnitID ca app pub 441173
  • OpenMP 大大减慢了 for 循环速度

    我正在尝试通过 OpenMP 并行化来加速这个 for 循环 我的印象是这应该将工作分成多个线程 然而 也许开销太大 无法给我带来任何加速 我应该提到这个循环发生了很多很多次 并且循环的每个实例都应该并行化 循环迭代次数 newNx 可以小
  • 如何 db:seed 模型及其所有嵌套模型?

    我有这些课程 class User has one user profile accepts nested attributes for user profile attr accessible email password passwor
  • 仅使用 Javascript 将事件监听器添加到不存在的对象

    我搜索了整个 stackoverflow 但没有针对这个问题得到任何好的结果 如果我错了 请纠正我 我想向 DOM 中存在或不存在的对象添加EventListener 在Jquery中我们可以简单地执行以下代码 document on cl
  • aspnet core实体框架7自引用“作业”1对多表

    我有一个包含职位的 职位 表 事实上 工作并不总是一次性完成的 您可以拥有一份需要多次访问的工作 我打算将其表示为另一项工作 但通过自引用 linkId 链接回原始工作 我无法使用 Fluent API 来表示这一点 它是一对多的关系 一项
  • 有没有办法在没有 GUI 的情况下从特定行运行 MATLAB 脚本?

    有没有办法在不使用 GUI 的情况下从特定行运行 MATLAB 脚本 在 GUI 中我使用 Thanks 可以写入一个函数 该函数将读取脚本 m 文件 跳过行直到需要的行 并将其余行写入临时 m 文件 然后运行它 或者从 line1 到 l
  • Flutter 升级 Flutter 版本后运行 pod install 时出错

    flutter版本升级到最新的Flutter 2 2 1后 在ios模拟器上运行app时 运行pod install时报错 我尝试通过执行以下命令来清洁 Pod 但它没有解决问题 flutter clean flutter pub get
  • 将委托作为变量存储/传递

    我对 C 相当陌生 正在研究一种使用串行通信来实现动态 GUI 的方法 我是C出身 所以函数指针的概念很熟悉 基本上我想在处理串行命令时调用answerFunction 函数 理论上 我有一个类 lbl txtBox Pair 它是在运行时
  • 可以从服务中检测到后退按钮按下吗?

    可以从服务中检测到后退按钮按下吗 真的如标题所说吗 我已经做了很多谷歌搜索 但找不到明确的答案 也没有办法做到吗 可以从服务中检测到后退按钮按下吗 不 抱歉 如果您在前台有一个 Activity 该 Activity 可以检测到 BACK
  • WordPress - 向 wp_posts 添加额外的列,然后发布到其中

    我试图在 添加帖子 或 添加页面 中添加一个额外的字段 我将该字段的值插入到数据库中 wp posts 表中添加的手动添加的列中 我知道我可以使用自定义字段模板 但问题是这些自定义字段将值插入 wp postmeta 而不是 wp post
  • 从 StackPanel 中删除子项

    for int i 0 i lt stackPanel Children Count i stackPanel Children Remove stackPanel Children i int x stackPanel Children
  • 访问 HttpParams 的所有条目

    有没有一种方法可以迭代所有条目HttpParams object 其他人也有类似的问题 打印 HttpParams HttpUriRequest 的内容 但答案并没有真正起作用 当调查时基本Http参数我看到有一个HashMap里面 但无法
  • 在 virtualenv 中的 GPU 集群上运行 TensorFlow

    我按照这些在 virtualenv 中安装了 GPU 版本的张量流指示 问题是 我在启动会话时遇到分段错误 也就是说 这段代码 import tensorflow as tf sess tf InteractiveSession 退出并出现
  • Debian 没有名为 numpy 的模块

    我已经在 Debian 上安装了 Python Numpy 使用 apt get 安装 python numpy 但是当运行 Python shell 时 我得到以下信息 Python 2 7 10 default Sep 9 2015 2
  • @Injectable() 装饰器和提供者数组

    Injectable 装饰器中 root 中提供的服务是否仍然必须位于模块的提供者数组中 The 角度文档并没有真正给我答案或者我不太明白 在我的核心文件夹中 我有一个在根目录中提供的身份验证服务 我不想将我的核心模块导入到应用程序模块中
  • React 将历史记录传递给路由器中定义的组件

    我的 App js 中有这个路由器
  • 如何更改默认 backBarButtonItem 上的颜色/图像?

    我需要更改默认的 self navigationItem backBarButtonItem 的颜色 为了实现这一点 我创建了一个自定义 Button 类并按如下方式实现它 void viewDidLoad super viewDidLoa
  • MVC3 在重定向到操作时销毁会话

    我在 MVC3 应用程序中遇到会话问题 在一个控制器中 我收到一个发布请求 然后在重定向到控制器 get 方法之前将值添加到会话中 问题是 在 GET 请求中 会话值返回 null 即使在 POST 请求中设置了会话值 HttpPost p
  • 带有复选框问题的 jQuery 禁用按钮

    我有以下代码 在选中复选框时启用按钮 http jsfiddle net ERfWz 1 以下是我的 HTML 页面中的代码片段 它非常相似 但由于某种原因它不起作用 我想我可能已经看它太久了
  • SmoothState.Js 页面更改后重新初始化页面脚本

    我使用 SmoothState js 进行页面转换 它工作正常并使用 ajax 加载新页面 然而 我在每个页面上都有需要重新初始化的 JS 脚本 并且我无法让它们始终出现在页面转换中 根据常见问题解答 smoothState js 提供了