
1 piapia123 2016-12-20 14:36:55 +08:00 pjax? |
2 knightdf 2016-12-20 14:37:45 +08:00 小白问个问题:什么是 pjax? |
3 JimmyCai 2016-12-20 14:38:15 +08:00 via Android pjax 后要重新绑定事件 |
4 liujin834 2016-12-20 14:38:41 +08:00 用 pjax 还不如用 angular |
6 OP @piapia123 嗯啊 |
8 bombless 2016-12-20 15:08:23 +08:00 $.on 都不行那要不说明你写错了要不说明你浏览器环境没救了 po 主发出来这效果说不定表明 v2 有可以利用的 xss 漏洞 @Livid |
9 Spectre OP @bombless pjax 刷新第一次的区域有个 a 标签 里面有个 onclick 触发事件,后来我把 onclick 去掉了给 a 加了个 id 然后写$(document).on 那个 ,第一次进界面可以,后来 pjax 请求刷新那个区域后,就不能了。。填充的区域 a 也加了 id 的。 |
10 Livid MOD PRO @bombless 1. V2EX 的 Markdown 允许一些安全标签 2. 楼主的原帖里有这样的安全标签 3. 楼主的原帖不应该用 Markdown 渲染,因为这样会导致其中的安全标签无法显示。现在改为 default 渲染之后应该可以表达原意 |
11 palmers 2016-12-20 15:37:49 +08:00 怎么 a 标签没有 href 属性呢? |
14 alex321 2016-12-20 15:41:11 +08:00 很久之前我们前端教训我,要用 on 代理。。。 |
17 bombless 2016-12-20 15:46:54 +08:00 @Spectre 首先确定一下,你知道 on 是怎么用的吧? 好比说你 DOM 结构是 <div id="a"><div id="b"></div></div> 然后你要用 ajax 刷新#b 节点 那你要$('#a').on('click', '#b', function() { /* ... */ })来代理 你确定是用类似这种方式吧? |
18 Spectre OP @bombless <div id='pjax-container'> <a href='' id='add'></a> </div> $(document).on('click','#add',function(){ }); 这种 刷新区域是 pjax-container 也是这个区域会被一个准备好的区域替代,除了数据不一样其他都一样 刚开始进界面 on 事件有用, pjax 后 on 事件没用了 |
19 bombless 2016-12-20 16:49:48 +08:00 也许你那页面用了什么别的框架比如什么模板库来替换一大块 DOM 建议可以慢慢剥掉外层的无关代码,一边确定问题是否能重现 最后找到能重现的最少的代码,运气好的话还能找到 ajax 后能触发 click 的代码 然后对比这两套代码 还找不到问题可以把最少的可以重现的代码发出来,这样别人也能帮你查 |
21 kn007 2016-12-20 17:10:26 +08:00 一般我是重新 hook |
23 xwartz 2016-12-20 17:12:22 +08:00 via iPhone 事件要重新绑定才行的 |
24 kiddyu 2016-12-20 17:20:03 +08:00 是不是 id 重复了?新页面是否有新 js 变量替换了$? 按说绑定到了 document 就不用重新绑定了,坐等看看 LZ 犯了啥低级错误- - |
25 panlilu 2016-12-20 17:34:41 +08:00 pjax 有自己的事件,如果你用的是 $(document).ready(function(){...}) 这种肯定是只触发一次的。 你可以在 pjax 自己的事件上重新做你的绑定操作。详情见文档。 |
26 yimity 2016-12-20 18:11:51 +08:00 用事件委托,我觉得是这个问题。不要直接把事件绑定到你要替换的元素上。 |
29 fy 2016-12-20 19:10:19 +08:00 现在还有人用 pjax ?还是换更新的技术吧 |
30 Spectre OP @panlilu 看到了 pjax:complete 这个 不过我在这方法里写$(document).on 还是不起作用 汗 |
31 Roycom 2016-12-20 21:42:36 +08:00 via iPhone 隐式绑定事件 obj.on('click','dim',function(){}) |
32 Spectre OP 额 lz 可以了 重新绑定事件后 需要覆盖的<div>范围把我的 modal 覆盖了。。一直以为是没响应链接。 |
33 Spectre OP 好像都不要重新绑定事件。。马丹 div 区域没看好。 |
34 ragnaroks 2016-12-21 00:01:46 +08:00 一般在回调里面重新绑定子元素的事件,暂没有遇到过无效的情况 |
36 dracarysX 2016-12-21 00:13:08 +08:00 可以使用$(document).on('click', 'a', function(){})绑定。因为你 pjax 后 a 元素就未绑定了。 |