qq_24435837
花生喂龙
2018-02-09 03:45
采纳率: 73.7%
浏览 2.9k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • qq_29240707
    根由心生 2018-02-09 03:47
    已采纳

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

    点赞 评论
  • zhangyongmail
    zhangyongmail 2018-02-09 03:48

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

    点赞 评论
  • makesuper
    makesuper 2018-02-09 03:49

    $(this).die().toggleClass

    点赞 评论
  • showbo

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

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

    点赞 评论
  • qq_41388024
    qq_41388024 2018-02-09 04:33

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

    点赞 评论
  • hf872914334
    hfhan_872914334 2018-02-09 05:54

    可以动态加载script

    <div id='pjax-content'></div>
        <script>
            $('#pjax-content').html() || $('#pjax-content').html('<script src="js/patient_group_member_add.js"><\/script>')
        </script>
    
    
    点赞 评论
  • tjj3027
    三知之灵 2018-02-23 09:31

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

    点赞 评论
  • qq_24435837
    花生喂龙 2018-02-27 03:11

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

    点赞 评论

相关推荐