jQuery應(yīng)用load()方法后js失效的問題分析與解決

load()方法算是最簡單的ajax了,非常方便,不過也有一些難以理解的地方。

創(chuàng)新互聯(lián)公司擁有一支富有激情的企業(yè)網(wǎng)站制作團隊,在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10年,專業(yè)且經(jīng)驗豐富。10年網(wǎng)站優(yōu)化營銷經(jīng)驗,我們已為上1000+中小企業(yè)提供了成都網(wǎng)站建設(shè)、做網(wǎng)站解決方案,按需求定制開發(fā),設(shè)計滿意,售后服務(wù)無憂。所有客戶皆提供一年免費網(wǎng)站維護!

比如不久前我出現(xiàn)了這樣一個問題:

我的代碼高亮是用pretty,它的特點是不破壞源代碼,用js動態(tài)使代碼著色,在載入正文后使用prettyPrint()函數(shù)使代碼高亮生效。

我在另一個頁面使用jQuery中的load()方法載入此頁面的正文,但是代碼區(qū)的高亮消失了,也就是說js代碼未運行。這是可以理解的,因為load()方法并未運行原網(wǎng)頁,而是將其當(dāng)做數(shù)據(jù)傳輸,js根本未啟動。

但是我在后面又加上prettyPrint()也依然沒效果,再查看源代碼才發(fā)現(xiàn)一個重要的問題:load()方法并未改變源代碼,根本看不到我們load過來的正文內(nèi)容。

我又使用find().is()來查找代碼區(qū)的<pre>標(biāo)簽也顯示沒有。一段不存在的內(nèi)容,應(yīng)用prettyPrint()當(dāng)然沒效果了。

那么,load過來的內(nèi)容到底去哪兒了呢?它真的不存在于任何地方嗎?

不是這樣的。后來我想到了曾看過的一個load()方法的教程里,講的callback,這個以前我以為是針對load狀態(tài)進行的反應(yīng),比如如果load失敗可以通過這個顯示一個什么之類的?,F(xiàn)在記起來了,當(dāng)時那個教程里不是將load過來的內(nèi)容淡入展現(xiàn)嗎?

這應(yīng)該就是問題的關(guān)鍵了,于是我將prettyPrint()放入callback中,果然代碼高亮出現(xiàn)了。

于是我知道了,load()方法里的內(nèi)容的生命周期只在這個load方法之內(nèi),過了就再也找不到了!要給其中的內(nèi)容應(yīng)用js,需要統(tǒng)統(tǒng)放到callback里!

具體代碼如下:

 

  1. $XX.load(url,function(){prettyPrint();}) 

 

分享名稱:jQuery應(yīng)用load()方法后js失效的問題分析與解決
文章鏈接:http://muchs.cn/article2/iioeoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、建站公司、網(wǎng)站排名App開發(fā)、、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作