Re: [問題] ajax 與 jquery 的使用

看板Ajax作者 (子不語)時間16年前 (2008/12/21 01:15), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串4/6 (看更多)
※ 引述《TonyQ (沉默是金)》之銘言: : 幫原PO重新簡述一下他的問題 : 1.在原頁面對[tip]執行事件綁定 : 2.載入ajax page : 發現2中 [tip]的元素 tooltip 沒有work. (因為根本沒有被綁訂) : 解決方案 : A 在2完成的時候針對ajax page 做[tip] tooltip 的綁定, : (盡量不要綁到1階段中已經綁定的元素 , 否則雙重綁定可能會有後遺症) : B 改用liveQuery 來進行步驟1的綁定 , 綁在ready上, 我會比較推崇後者. : 寫javascript , document 的文件概念 、執行的時間軸是最重要的兩個項目, : 要隨時瞭解這條時間軸走到哪裡 , 當時有哪些成員 , 並善用瀏覽器提供的 : break point功能 , 不然很容易陷入這樣難以自行發現問題的困境. 我碰到的是類似問題,但是更詭異: 我在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的 ready事件,且ready事件影響範圍僅有child.html之內。 目前正在想能不能在$.ajax的option裡面 success:function這個參數上下手腳, 因為在success時已經有了data可以操作,不知道有沒有辦法對這個data下達. trigger('ready')來觸發子頁面的ready事件呢? 有誰有試過的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.21.8

12/21 10:18, , 1F
我自己是用$(function(){alert("hi");});是會執行的
12/21 10:18, 1F

12/21 10:19, , 2F
剛測試了一下ready應該也會說...
12/21 10:19, 2F

12/21 10:23, , 3F
我猜是你子網頁有寫錯
12/21 10:23, 3F

12/21 10:53, , 4F
子網頁沒寫錯耶,我在google上也看到很多相同的問題
12/21 10:53, 4F

12/21 10:53, , 5F
我主要的問題在於ajax動作是由jQuery UI的tabs plugin
12/21 10:53, 5F

12/21 10:54, , 6F
做出來的,所以我無權干涉ajax的呼叫方法,只好修改
12/21 10:54, 6F

12/21 10:54, , 7F
ajaxOption來客製化自己想要的效果
12/21 10:54, 7F

12/21 10:54, , 8F
或許用load或$.get會執行吧,但是tabs的ajax根本不理我
12/21 10:54, 8F
文章代碼(AID): #19JIWdV8 (Ajax)
討論串 (同標題文章)
文章代碼(AID): #19JIWdV8 (Ajax)