因为要处理回退的问题,所以项目引入了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代码写这里
}