PJAX加载页面使得JS文件被加载了多次,一个事件被重复绑定

因为要处理回退的问题,所以项目引入了pjax,由于项目页面较多,所以没有把js都放在首页,而是单独放的,结果同一个js就被加载了多次,同一个事件被反复绑定。
图片说明
图片说明
图片说明
图片说明

注册之前 献解绑一次 这样就保证 只有一个绑定事件 off("click");

绑定事件前先进行解绑后再绑定

$(this).die().toggleClass

这个是jquery的html方法实现的自动加载,和pjax没关系,html设置容器内容时包含script会自动加些加载js文件或者执行js代码。你的自己处理好接口返回的js代码,如body click不想点解要先off解绑对应事件再绑定新的

相关的js直接父页导入,而不是依赖ajax动态加载

注册之前 献解绑一次 这样就保证 只有一个绑定事件 off("click");

可以动态加载script

<div id='pjax-content'></div>
    <script>
        $('#pjax-content').html() || $('#pjax-content').html('<script src="js/patient_group_member_add.js"><\/script>')
    </script>

绑定事件之前解绑可以避免多次绑定问题,但是原始文件多次加载只能通过提取到最初的文件中避免

提供一种解决方案
在开头判断自己是不是已经加载过了
//在JS最上面加段代码,内容如下:
if (typeof (testjsflag) == "undefined") {
var testjsflag; //需要确保该变量是该JS独有的,可以把名字取长点确保唯一 
//TODO... 原本的JS代码写这里
}