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

2020-07-30 17:24:29 +08:00
 kop1989

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

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

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

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

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

2589 次点击
所在节点    jQuery
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694392

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX