整合pjax無刷新


一:整合pjax的准備工作;

檢查你的網站是否引入1.7.0版本以上的jquery.js,如果沒有請全局引入

1.新浪CDN提速:
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.0/jquery.js";></script>
2.下載本地化jq:
<script type="text/javascript" src="....自己寫...../jquery.js"></script>
1.7.0版本以上的才有pushState的封裝。

二:開始整合Pjax;

1.下載pjax.js ;

2.在你喜歡的位置(最好body代碼結束前)引入pjax.js;

三:使用pjax;

編輯模版footer.php在</body>標記結束前插入:

<script>
$(document).pjax('a[target!=_blank]', '#contentleft', {fragment:'#contentleft', timeout:8000});
</script>
這句話是什么意思呢?--綁定本頁面非新窗口打開的所有本域鏈接,鏈接點擊之后,替換contentleft的容器的內容為新內容contentleft,ajax超時時間8秒;

OK,因為每個模版的替換區不同,修改掉contentleft容器,保存。

現在看看,是否可以無刷新加載了?

四:解決pjax的緩沖--加入等待動畫;

pjax.js提供了兩個接口;

<div class="pjax_loading"></div>
<script>
$(document).on('pjax:send', function() { //pjax鏈接點擊后顯示加載動畫;
$(".pjax_loading").css("display", "block");
});
$(document).on('pjax:complete', function() { //pjax鏈接加載完成后隱藏加載動畫;
$(".pjax_loading").css("display", "none");
});
</script>
當然要為pjax_loading定義css,這里就不多說了。

五:解決pjax之后,容器中一些jq事件失效的問題;

問題比如:pjax之后多說評論框不加載,ajax評論不能提交等等問題。

問題原因:原先容器綁定的事件被新容器替換掉了,新容器的div沒有綁定事件,所以點擊無效。

解決方法:利用pjax的加載完成回調函數,重新綁定事件。

例:

<script>
$(document).on('pjax:complete', function() {
pajx_loadDuodsuo();//pjax加載完成之后調用重載多說函數
});
function pajx_loadDuodsuo(){
var dus=$(".ds-thread");
if($(dus).length==1){
var el = document.createElement('div');
el.setAttribute('data-thread-key',$(dus).attr("data-thread-key"));//必選參數
el.setAttribute('data-url',$(dus).attr("data-url"));
DUOSHUO.EmbedThread(el);
$(dus).html(el);
}
}
</script>
OK,我們發現多說可以正常載入了。

六:全部代碼匯總一下,就是這樣:

<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.0/jquery.js";></script> 
<script type="text/javascript" src="你的域名/pjax.js"></script>
<div class="pjax_loading"></div>
<script>
$(document).pjax('a[target!=_blank]', '#contentleft', {fragment:'#contentleft', timeout:8000});
$(document).on('pjax:send', function() { //pjax鏈接點擊后顯示加載動畫;
$(".pjax_loading").css("display", "block");
});
$(document).on('pjax:complete', function() { //pjax鏈接加載完成后隱藏加載動畫;
$(".pjax_loading").css("display", "none");
pajx_loadDuodsuo();
});
function pajx_loadDuodsuo(){
var dus=$(".ds-thread");
if($(dus).length==1){
var el = document.createElement('div');
el.setAttribute('data-thread-key',$(dus).attr("data-thread-key"));//必選參數
el.setAttribute('data-url',$(dus).attr("data-url"));
DUOSHUO.EmbedThread(el);
$(dus).html(el);
}
}
</script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM