您好,登錄后才能下訂單哦!
load()方法算是最簡單的ajax了,非常方便,不過也有一些難以理解的地方。
比如不久前我出現了這樣一個問題:
我的代碼高亮是用pretty,它的特點是不破壞源代碼,用js動態使代碼著色,在載入正文后使用prettyPrint()函數使代碼高亮生效。
我在另一個頁面使用jQuery中的load()方法載入此頁面的正文,但是代碼區的高亮消失了,也就是說js代碼未運行。這是可以理解的,因為load()方法并未運行原網頁,而是將其當做數據傳輸,js根本未啟動。
但是我在后面又加上prettyPrint()也依然沒效果,再查看源代碼才發現一個重要的問題:load()方法并未改變源代碼,根本看不到我們load過來的正文內容。
我又使用find().is()來查找代碼區的<pre>標簽也顯示沒有。一段不存在的內容,應用prettyPrint()當然沒效果了。
那么,load過來的內容到底去哪兒了呢?它真的不存在于任何地方嗎?
不是這樣的。后來我想到了曾看過的一個load()方法的教程里,講的callback,這個以前我以為是針對load狀態進行的反應,比如如果load失敗可以通過這個顯示一個什么之類的。現在記起來了,當時那個教程里不是將load過來的內容淡入展現嗎?
這應該就是問題的關鍵了,于是我將prettyPrint()放入callback中,果然代碼高亮出現了。
于是我知道了,load()方法里的內容的生命周期只在這個load方法之內,過了就再也找不到了!要給其中的內容應用js,需要統統放到callback里!
具體代碼如下:
- $XX.load(url,function(){prettyPrint();})
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。