作者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