V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kop1989
V2EX  ›  jQuery

关于 JQuery.load(html)加载 html,导致父 html 的$.fn 以及$.unbind 失效的问题

  •  
  •   kop1989 · 2020-07-30 17:24:29 +08:00 · 2353 次点击
    这是一个创建于 1337 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前在用 JQuery 的 load()方法维护一个页面栈(页面的异步加载,回退)。

    但发现当使用 load()方法之后,在之前页面声明的$.fn 以及会失效。(提示$(#).xxx is not defined )

    而如果对之前页面的 dom 组件使用$.unbind 方法,也会无效。但$.bind 方法有效。(即在$.load()之前已经 bind 过的事件无法解绑)。

    有没有大神能说说如何解决这个问题,或者$.load()导致这个问题的原理?(目前只发现了问题现象,即异步加载的页面不能再导入 jquery.js ,一旦子页面也导入了 jquery.js ,就会出现上文的问题。但我每个页面都是解耦的,有可能是第一页,也有可能是第二页。所以只有部分页面引用 jquery.js 不现实。)

    搜遍全网也没有类似的文章,可能是用.load()异步加载页面的人太少了吧😂

    1 条回复    2020-07-30 22:22:49 +08:00
    tikazyq
        1
    tikazyq  
       2020-07-30 22:22:49 +08:00
    临时解决方案:
    1. 将问题用百度翻译弄成英文,复制粘贴到 StackOverflow,提交问题,等答案
    2. 死磕,熬夜加班疯狂 hack jQuery 源码,干到天亮终于解决,隔几天遇到问题又上 v2 求帮助
    3. 不成熟的小建议:用 iframe 加载,或去 <script> 标签后渲染加载

    一劳永逸方案:
    1. 完全干掉 jQuery
    2. 迁移到 Vue 、React
    3. 拥抱大前端,学习 Webpack 、ES6 、TypeScript 、ESLint 、PWA 、WebAssembly 、Web Component 、Svelte 、Taro 、Flutter 、Antd 、Element-UI
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2983 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:05 · PVG 23:05 · LAX 08:05 · JFK 11:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.