看板 Ajax 關於我們 聯絡資訊
※ 引述《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
TonyQ:基本上我是認為 jQuery 不應該製造document.ready 事件 12/21 17:56
TonyQ:至少在這個問題上. 12/21 17:56
neversay:但是這樣要大改code,我在找的是不更改舊jQuery就能套 12/21 23:51
neversay:ajax的方法,後來是在success塞jQuery.ready()解決 12/21 23:52
neversay:不知道這樣會不會有其他副作用呢? 12/21 23:52
neversay:目前還沒看到明顯副作用,不知道T大有沒有類似經驗? 12/21 23:52
TonyQ:還好欸 @_@ 因為這種設計層面的問題已經是設計guideline了 12/22 13:09
TonyQ:所以我只有碰過一次 , 之後就沒再碰過了. 12/22 13:09