我是一个 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/