Js 小白问个 pjax 的问题

2016 年 12 月 20 日
 Spectre
pjax 刷新的区域带有<a onclick="">这种 onclick 事件,在第一次页面加载时 onclick 事件点击是有反应的(),
pjax 请求后 onclick 事件就不生效了,用了$(document).on()那种还是不行。
4839 次点击
所在节点    JavaScript
41 条回复
kn007
2016 年 12 月 20 日
一般我是重新 hook
lslqtz
2016 年 12 月 20 日
@Livid 我还是喜欢 Default 。
发帖时也提供个和编辑一样的选项就好了,编辑有时限
xwartz
2016 年 12 月 20 日
事件要重新绑定才行的
kiddyu
2016 年 12 月 20 日
是不是 id 重复了?新页面是否有新 js 变量替换了$?
按说绑定到了 document 就不用重新绑定了,坐等看看 LZ 犯了啥低级错误- -
panlilu
2016 年 12 月 20 日
pjax 有自己的事件,如果你用的是 $(document).ready(function(){...}) 这种肯定是只触发一次的。
你可以在 pjax 自己的事件上重新做你的绑定操作。详情见文档。
yimity
2016 年 12 月 20 日
用事件委托,我觉得是这个问题。不要直接把事件绑定到你要替换的元素上。
Spectre
2016 年 12 月 20 日
@Kilerd ...dota 幽鬼!
Spectre
2016 年 12 月 20 日
@kiddyu 新页面和旧页面一样的 只是数据不一样了,这个 pajax 请求是个分页请求只是数据不同了而已
fy
2016 年 12 月 20 日
现在还有人用 pjax ?还是换更新的技术吧
Spectre
2016 年 12 月 20 日
@panlilu 看到了 pjax:complete 这个 不过我在这方法里写$(document).on 还是不起作用 汗
Roycom
2016 年 12 月 20 日
隐式绑定事件 obj.on('click','dim',function(){})
Spectre
2016 年 12 月 20 日
额 lz 可以了 重新绑定事件后 需要覆盖的<div>范围把我的 modal 覆盖了。。一直以为是没响应链接。
Spectre
2016 年 12 月 20 日
好像都不要重新绑定事件。。马丹 div 区域没看好。
ragnaroks
2016 年 12 月 21 日
一般在回调里面重新绑定子元素的事件,暂没有遇到过无效的情况
kiddyu
2016 年 12 月 21 日
@Spectre 哈哈,果然是低级错误。绑定到 document 页面没有刷新一般是不需要重新绑定的
dracarysX
2016 年 12 月 21 日
可以使用$(document).on('click', 'a', function(){})绑定。因为你 pjax 后 a 元素就未绑定了。
Spectre
2016 年 12 月 21 日
@kiddyu HAHA 我直接在 a 链接里写 onclick 返回的 a 里也有 onclick 就好了
ghbjy1128
2016 年 12 月 21 日
@fy 换新技术的话,怎么低成本的解决 SEO 问题?
jalen
2016 年 12 月 21 日
@fy 什么新技术呢?
fy
2016 年 12 月 21 日
@ghbjy1128 当然是服务端渲染啊……

@jalen 各路 MVVM 框架

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

https://study.congcong.us/t/328862

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

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

© 2021 V2EX