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
|
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 @bombless 1. V2EX 的 Markdown 允许一些安全标签
2. 楼主的原帖里有这样的安全标签 3. 楼主的原帖不应该用 Markdown 渲染,因为这样会导致其中的安全标签无法显示。现在改为 default 渲染之后应该可以表达原意 |
11
palmers 2016-12-20 15:37:49 +08:00
怎么 a 标签没有 href 属性呢?
|
13
Livid MOD @Spectre 如果你用的是 https://www.v2ex.com/new 这个地址发帖,那么帖子会默认用 Markdown 渲染。
|
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 元素就未绑定了。
|