javascript - 在进行 pjax 调用时,如何调用在 $(document).ready() 上调用的 jquery?

标签 javascript jquery html pjax

我是一个 pjax 初学者,不确定我实现它的方式是否正确。我有一个包含很多 jquery 的旧项目。为了稍微组织一下,我遵循的方法是为每个页面的正文分配一个唯一的 ID <body id="Login"> 。在我的布局中,我编写了代码:

var page = $('body').attr('id');
if(page !== '' && typeof self[page] != 'undefined')
   self[page].init();

对于页面特定的jquery,我写了这样的东西:

var Login = (function() {
    var funct = {};

    //any variables, only required on this page

    funct.someFunction = function(){
      //code
    }

    funct.init = function(){
        //all the functions that are to be called on page load
    }
    return funct;

})();

现在,在每个页面加载时,仅执行页面上所需的代码。不过,我现在将大部分链接设为 pjax 链接。因此,在登录页面上有一个链接:

<a data-pjax href="/register">Register</a>

并且布局具有代码:

$(document).pjax('a[data-pjax]', '#pjax-container');

这将打开注册页面。但是,由于主体 ID 仍然是“Login”,因此它没有加载Register.init()

我该如何克服这个问题?

最佳答案

我从未使用过 pjax,但根据他们的文档,您可以添加一个事件监听器来在页面更改完成后运行一些代码

$(document).on('pjax:end', function(event) {
  //
})

您应该能够对 event.target 执行某些操作,希望它是被单击的链接,以便找出新页面是什么。

关于javascript - 在进行 pjax 调用时,如何调用在 $(document).ready() 上调用的 jquery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434872/

相关文章:

javascript - 如何设置动画定位固定 :before selector With jQuery

javascript - 停止从子组件触发父组件波纹

javascript - 从下拉列表中选择值时调用 javascript 函数

jquery - 更新/重新加载选定的节点,可能吗?

javascript - replace() 与第二个参数作为变量?

javascript - 在浏览器中通过 setInterval 显示多个图像非常慢

javascript - 如何在 jQuery 中创建气球?

html - ahref - 隐藏选择颜色

php - 在 X-Editable 中通过 Ajax 提交数据

javascript - 影响 JavaScript/CSS 的 HTML 空间格式