在pjax容器加载上保留脚本

时间:2012-09-04 22:42:31

标签: jquery ajax wordpress pjax

我有wordpress网站,我第一次使用pjax。我希望能够更新#main容器,以及主容器之外的div,我将其用于拉伸的背景滑块。

背景滑块编写html,以及指定滑块设置的脚本标记。我能够通过使用innerHTML(我选择而不是jquery的html()来保留脚本)将滑块的html移动到#main容器之外的适当位置。那时我注意到脚本标签似乎根本没有在pjax请求中返回。

是否有任何可用于保留脚本标记的工作,或以某种方式在调用中检索它?加载pjax后我是否需要单独的ajax调用才能获取脚本标记信息?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题,也让我头疼了一段时间。

不幸的是,PJAX不会导致页面重新分析或重新编译JavaScript,尽管它会遍历新的DOM并注册新的事件处理程序。

这意味着如果您在使用PJAX加载的内容中进行JavaScript调用,则需要将它们调用的函数加载到原始文档中。

因此,您可以使用onClick加载图像,例如在灯箱中弹出更大的版本,但前提是您在加载原始页面时加载灯箱JavaScript函数。

很简单的例子:

在原始HTML页面中:

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

在PJAX加载的内容中:

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

但是如果您在原始页面中没有脚本元素并尝试使用PJAX加载它,它将无法工作。