0

我正在使用 PJAX (jquery-pjax) 和 pjax_rails 来导航 Rails 应用程序。

在第 1 页,我有一个 jquery ui 手风琴。

当我单击一些启用 pjax 的链接时,第 2 页内容正确加载了 pjax

当我单击后退按钮时,第 1 页内容被 pjax 加载,但手风琴似乎坏了,即当我单击打开另一个选项卡时,打开的选项卡保持打开状态,并调用 .accordion('option','active') activate 和 beforeActivate 事件处理程序返回 -1。

进一步单击已关闭的选项卡标题将打开它们,但最初打开的选项卡仍保持打开状态。

单击最初打开的选项卡的标题,然后单击另一个选项卡最终将使手风琴按预期呈现,但 .accordion('option','active') 仍然返回 -1。

我尝试使用 Firebug 与处于“损坏”状态的手风琴进行交互,但它对 .accordion('destroy') 没有响应。

使用 .accordion('option','active', 2) 会触发相关事件,但 UI 不会更新。请求 .accordion('option','active') 然后正确返回 2。

有没有人经历过类似的事情?关于如何解决这个问题的任何想法,即在 pjax 状态更新后按下后退按钮后有一个工作手风琴?

谢谢!

pjax_rails:https ://github.com/rails/pjax_rails jquery ui 手风琴:http: //jqueryui.com/demos/accordion/(我使用的是 1.9.0m8 版本)

4

1 回答 1

0

Pjax 在导航之前克隆当前页面的 HTML 状态,然后缓存它。当您单击返回时,它会再次将该克隆从缓存中拉出,但此时不会重新初始化任何 javascript。

我建议的一般规则是$(document).on('pjax:start')$(document).on('pjax:end').

于 2012-07-09T22:58:51.663 回答