解決pjax加載頁面不執行js插件的問題



個人博客 地址:http://www.wenhaofan.com/article/20180913220425

介紹

在使用jquery.pjax的時候發現加載頁面時不會執行其中的layui以及jquery的初始化方法,包括一些插件的初始化方法。

查看源碼后發現該jquery.pjax替換容器內容時,是將服務器端返回的html轉換為了jquery dom節點然后再執行的替換,但是這樣操作會導致一系列的加載事件不會被觸發,導致例如jquery和layui的初始化方法不會被執行。

於是決定將添加dom節點修改為直接添加html片段。

修改代碼

1.將jquery.pjax.js中311行的 context.html(container.contents)修改為 context.html(data)。

    這樣在pjax加載新頁面的時候便會直接將服務器端返回html片段添加進容器。

    但是這樣僅處理了新增頁面,而執行回退操作時pjax會從緩存中讀取上一個頁面的內容,同樣pjax在回退上一個頁面的時候依然是以dom節點的方式存儲和添加的,所以我們還需要繼續修改。

2.

    將365行的

    cachePush(pjax.state.id, [options.container, cloneContents(context)])
    修改為
  cachePush(pjax.state.id, [options.container, context.html()])


到此修改完成,此時使用pjax加載新頁面的時候,layui jquery等插件的初始化方法即可正確執行。


免責聲明!

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



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