pjax 刷新的区域带有<a onclick="">这种 onclick 事件,在第一次页面加载时 onclick 事件点击是有反应的(),
pjax 请求后 onclick 事件就不生效了,用了$(document).on()那种还是不行。
pjax 请求后 onclick 事件就不生效了,用了$(document).on()那种还是不行。
|
piapia123Dec 20, 2016
1
pjax?
|
|
knightdfDec 20, 2016
2
小白问个问题:什么是 pjax?
|
|
JimmyCaiDec 20, 2016 via Android
3
pjax 后要重新绑定事件
|
|
liujin834Dec 20, 2016
4
用 pjax 还不如用 angular
|
|
9
@bombless pjax 刷新第一次的区域有个 a 标签 里面有个 onclick 触发事件,后来我把 onclick 去掉了给 a 加了个 id 然后写$(document).on 那个 ,第一次进界面可以,后来 pjax 请求刷新那个区域后,就不能了。。填充的区域 a 也加了 id 的。
|
|
10
@bombless 1. V2EX 的 Markdown 允许一些安全标签
2. 楼主的原帖里有这样的安全标签 3. 楼主的原帖不应该用 Markdown 渲染,因为这样会导致其中的安全标签无法显示。现在改为 default 渲染之后应该可以表达原意 |
|
palmersDec 20, 2016
11
怎么 a 标签没有 href 属性呢?
|
|
13
@Spectre 如果你用的是 https://www.v2ex.com/new 这个地址发帖,那么帖子会默认用 Markdown 渲染。
|
|
alex321Dec 20, 2016
14
很久之前我们前端教训我,要用 on 代理。。。
|
|
bomblessDec 20, 2016
17
@Spectre 首先确定一下,你知道 on 是怎么用的吧?
好比说你 DOM 结构是 <div id="a"><div id="b"></div></div> 然后你要用 ajax 刷新#b 节点 那你要$('#a').on('click', '#b', function() { /* ... */ })来代理 你确定是用类似这种方式吧? |
|
18
@bombless
<div id='pjax-container'> <a href='' id='add'></a> </div> $(document).on('click','#add',function(){ }); 这种 刷新区域是 pjax-container 也是这个区域会被一个准备好的区域替代,除了数据不一样其他都一样 刚开始进界面 on 事件有用, pjax 后 on 事件没用了 |
|
bomblessDec 20, 2016
19
也许你那页面用了什么别的框架比如什么模板库来替换一大块 DOM
建议可以慢慢剥掉外层的无关代码,一边确定问题是否能重现 最后找到能重现的最少的代码,运气好的话还能找到 ajax 后能触发 click 的代码 然后对比这两套代码 还找不到问题可以把最少的可以重现的代码发出来,这样别人也能帮你查 |
|
kn007Dec 20, 2016
21
一般我是重新 hook
|
|
xwartzDec 20, 2016 via iPhone
23
事件要重新绑定才行的
|
|
kiddyuDec 20, 2016
24
是不是 id 重复了?新页面是否有新 js 变量替换了$?
按说绑定到了 document 就不用重新绑定了,坐等看看 LZ 犯了啥低级错误- - |
|
panliluDec 20, 2016
25
pjax 有自己的事件,如果你用的是 $(document).ready(function(){...}) 这种肯定是只触发一次的。
你可以在 pjax 自己的事件上重新做你的绑定操作。详情见文档。 |
|
yimityDec 20, 2016
26
用事件委托,我觉得是这个问题。不要直接把事件绑定到你要替换的元素上。
|
|
fyDec 20, 2016
29
现在还有人用 pjax ?还是换更新的技术吧
|
|
RoycomDec 20, 2016 via iPhone
31
隐式绑定事件 obj.on('click','dim',function(){})
|
|
32
额 lz 可以了 重新绑定事件后 需要覆盖的<div>范围把我的 modal 覆盖了。。一直以为是没响应链接。
|
|
33
好像都不要重新绑定事件。。马丹 div 区域没看好。
|
|
ragnaroksDec 21, 2016
34
一般在回调里面重新绑定子元素的事件,暂没有遇到过无效的情况
|
|
dracarysXDec 21, 2016
36
可以使用$(document).on('click', 'a', function(){})绑定。因为你 pjax 后 a 元素就未绑定了。
|