问题
我正在处理一个项目,并且正在使用以下结构:
主文件(index.php)
子文件夹
子子文件夹
带有jQuery代码的PHP文件
所有子子文件夹文件均通过jquery加载并使用以下代码加载
$(document).on('click', '.sub_sub_menu', function (e) {
e.preventDefault()
//uri = subfolder/subsubfolder/i.php {Assuming}
uri = $(this).attr('uri')
$('.system_viewport').load(uri)
})
当我单击某个菜单栏项时,它会很好地加载php页面,并且当我通过单击其他文件来加载它们时,我可以在我的主文件(index.php)页面上执行php页面中的所有功能。它们加载的菜单栏很好,问题是当我尝试返回到先前加载的文件时,由于大多数单击事件拒绝触发,地狱变得松散了。
我的想法
第一次加载文件时,再次将jQuery函数加载到DOM时,它仍然会通过创建某种冲突或其他方式将函数加载到DOM中。
答案 0 :(得分:0)
也许您可以跟踪之前已加载的uri:
let visitedUrls = [];
$(document).on('click', '.sub_sub_menu', function (e) {
e.preventDefault()
//uri = subfolder/subsubfolder/i.php {Assuming}
uri = $(this).attr('uri');
if(visitedUrls.indexOf(uri) === -1) {
$('.system_viewport').load(uri);
visitedUrls.push(uri);
} else {
$('.system_viewport').load(uri + '?excludejs=1');
}
});
然后在应用程序的php端,您可以基于if($_GET['excludejs'] == '1')
或类似的东西从内容中排除JS文件?