2011-02-24 59 views
0

我有一個頁面上有一堆物品。每個項目都有一個小部件,單擊它時會彈出一個YUI彈出式選項菜單。到目前爲止,這工作正常。如何在ajax頁面插入後更新yui菜單位置?

我正在使用jQuery/ajax調用插入新項目到頁面中,推動現有的項目。項目正在正確插入,但我現在必須更新項目的彈出式菜單的位置,以匹配調用它們的小部件的新位置。據我所知,它們被計算爲頁面座標,並在頁面呈現時與菜單對象一起存儲,並且不會被ajax插入自動更新。

這是我的問題所在:我嘗試了一些jQuery,爲每個菜單重新計算菜單項,執行removeListener()來殺死舊菜單,並執行addListener()來插入應該新的那一個。這會在調用菜單時正確更新菜單的位置,但會破壞其他內容:如果我點擊一個小部件並調出一個菜單,然後單擊該頁面上的其他位置,菜單將保留在屏幕上而不是消失。我可以點擊其他小部件,他們也會出現。注意:控制檯中不顯示錯誤;在菜單演示過程中按ESCAPE鍵仍可正確隱藏菜單。

必須有辦法做到這一點,但我迷路了。任何線索?也許我真正需要做的是更新菜單的上下文信息;有沒有辦法做到這一點,沒有刪除和添加偵聽器序列,似乎是在搞我?謝謝!

+0

更新:看起來竅門可能是跳過重新創建菜單,而是爲菜單疊加層設置YUI上下文觸發器,這將導致菜單上下文重新計算。我已經添加了這個 - YAHOO.widget.Overlay.prototype.CONTEXT_TRIGGERS = YAHOO.widget.Overlay.prototype.CONTEXT_TRIGGERS.concat([「windowScroll」]); - 到頁面,如果我在插入後滾動窗口,一切都是正確的。所以現在我需要一個事件,這個事件會在重疊,我猜,移動或類似的東西后觸發。我試過「moveEvent」,但沒有運氣。這有助於任何人嗎? – 2011-02-24 23:32:54

+0

更新#2:將「beforeShow」添加到上下文觸發器列表似乎正在工作。還在留意它,但... – 2011-02-24 23:58:57

+0

更多關於我的嘗試的文檔:如果將這些事件的數組添加到菜單的創建中(新的YAHOO,請將這些事件的數組添加到「[ShowShow」,「windowScroll」]] .widget.Menu ...)不起作用。 – 2011-02-25 00:04:23

回答

0

所有的更新都會繼續保持良好狀態;我宣佈要回答這個問題。

相關問題