2013-08-24 56 views
0

運行與在以下站點Pjax片段一個困難的錯誤:Pjax/Ajax的片段返回寬度/ 0 offsetWidth上負載

https://dl.dropboxusercontent.com/u/65752410/map.html

目前,點擊「日程表」和「地圖」鏈接在nav中將通過Pjax加載頁面片段以及一些有條件的javascript,由requirejs提供。

在「地圖」頁面上,首頁加載將正確計算每個元素的類寬度爲.side-panel。但是,後續加載將返回寬度0,儘管在查詢寬度時所選元素存在於DOM中。

重現bug:

  1. 等到地圖加載
  2. 點擊「日程安排」鏈接來加載進度頁面
  3. 點擊「地圖」鏈接來加載地圖頁面。每個.side_panel的寬度將被記錄爲0。

如果此測試期間保持控制檯打開,你會看到適當的寬度登錄頁面加載,日程安排頁面動態加載在第二步驟,然後在地圖頁面加載DOM中.side_panel元素,但返回的0

+1

f你看看控制檯,面板div沒有offsetParent,它意味着它尚未插入到DOM中,這意味着寬度將爲0. – kalley

回答

6

的寬度如果你看一下控制檯,面板DIV不具有offsetParent,這意味着它沒有被插入DOM,這將意味着寬度將爲0.

+0

您是100%正確的。它必須處理jQuery對象的緩存 - 引用是針對一組舊元素的,後來從DOM中刪除了這些元素。謝謝! – Jon