作者TonyQ (沉默是金)
看板Ajax
标题Re: [问题] ajax 与 jquery 的使用
时间Sun Dec 21 17:55:21 2008
※ 引述《neversay (子不语)》之铭言:
: ※ 引述《TonyQ (沉默是金)》之铭言:
: 我碰到的是类似问题,但是更诡异:
: 我在parent.html里面会经由ajax呼叫child.html,而child.html里面有一script
: <script>
: $(document).ready(function(){//do something});
: </script>
: 问题就出在当我parent.html读入child.html之後,child.html的script没有执行,
: 没有动作的原因很简单,因为jQuery的$().ready是在parent.html读取完毕才会触发
: 的,child.html的读取完毕事件并不会触发ready事件,所以child.html里面的$().ready
: 完全没作用!
: 我现在的补救方法是把function参数化提出来,改写child.html:
: <script>
: var f = function(){//do something};
: f();
: $().ready(f);
: </script>
: 这样就能动作了,但是我认为这不是一个好解法,我认为jQuery应该要对ready事件
: 触发的时机与scope做个更动,在ajax读取child.html完毕时,要触发 child.html的
这个问题的确是存在的 ,
有一个很传统的方法 , 把 onload 才要执行的script ,
写在 body尾巴直接执行 而不要用ready绑定.
到目前为止除了程式码编排方面的理由 , 我好像还没有看过不能这样做的.
当然 , 要小心ie底下「网际网路连线已中止」的问题, 特别是表格排版的网页.
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.78.140
1F:→ TonyQ:基本上我是认为 jQuery 不应该制造document.ready 事件 12/21 17:56
2F:→ TonyQ:至少在这个问题上. 12/21 17:56
3F:推 neversay:但是这样要大改code,我在找的是不更改旧jQuery就能套 12/21 23:51
4F:→ neversay:ajax的方法,後来是在success塞jQuery.ready()解决 12/21 23:52
5F:→ neversay:不知道这样会不会有其他副作用呢? 12/21 23:52
6F:→ neversay:目前还没看到明显副作用,不知道T大有没有类似经验? 12/21 23:52
7F:→ TonyQ:还好欸 @_@ 因为这种设计层面的问题已经是设计guideline了 12/22 13:09
8F:→ TonyQ:所以我只有碰过一次 , 之後就没再碰过了. 12/22 13:09