2012-09-04 42 views
2

我有第一次使用pjax的wordpress網站。我希望能夠更新#main容器,以及一個位於主容器之外的div,我正在使用該容器來拉伸背景滑塊。在pjax容器加載時保留腳本

背景滑塊寫入html,加上指定滑塊設置的腳本標記。我能夠通過使用innerHTML(我選擇而不是jquery的html()來保留腳本)將滑塊的html移動到#main容器之外的適當位置。那時候我發現腳本標記看起來並沒有在pjax請求中返回。

是否有任何解決方法可用於保留腳本標記或以某種方式在調用中檢索它? pjax加載後需要單獨的ajax調用來獲取我的腳本標籤信息嗎?

謝謝!

回答

1

這是一個很好的問題,也引起了我一陣頭痛。

不幸的是,PJAX不會導致頁面重新分析或重新編譯JavaScript,儘管它將會遍歷新的DOM並註冊新的事件處理程序。

這意味着如果您在使用PJAX加載的內容中有JavaScript調用,則需要調用它們在原始文檔中加載的函數。

因此,您可以使用onClick加載圖像,以便在Lightbox中彈出較大的版本,例如,但僅當您在加載原始頁面時加載lightbox JavaScript函數。

很簡單的例子:

在原始的HTML頁面:

<script type="text/javascript" src="lightbox.js" /> 

在PJAX負載的內容:

<img src="small-image.jpg" onClick="javascript:show_lightbox('big0image.jpg');" /> 

但是,如果你沒有在腳本元素原始頁面並嘗試使用PJAX加載它不起作用。