2012-08-09 47 views
0

我有一個客戶端應用程序,我正在使用jQuery 1.7.x,Backbone和Underscore進行操作。該應用程序有很多列,當窗口調整大小時,我需要調整DOM以推送或彈出列。我遇到了如何在窗口調整大小時可靠地操作DOM的問題,因爲事件需要時間來觸發,事件堆棧需要時間來清除,並且需要考慮DOM的列數。哦,我正在使用有用的下劃線去抖動方法來調整我的調整大小監聽器以及這些需要觸發的特定事件的延遲方法。窗口上的DOM操作通過Backbone Events調整大小

在窗口調整大小我需要彈出列,如果他們不適合水平。在窗口收縮速度超過調整大小偵聽器的情況下,我需要進行一些dom清理以使所有內容都適合。

  • 它是通過列更好地循環的DOM每個調整觸發和計算fit_width當前的DOM列的循環內,並且彈出,如果有必要嗎?一個新的調整大小事件可能會改變/中斷事件?

  • 或者更好的方法是在每個調整大小觸發器上觸發DOM上列數的pop_column_if_too_wide? 這似乎壞...

通過事件觸發處理一切都將是不錯,但我取決於_.defer不是因爲事件堆棧上的電流環路的迭代計算速度快足夠可靠,可尚未清除。因此它可能最終會爲同一個模塊發起兩次事件。

也許還有更好的辦法。

回答

1

他們是否真的需要將從dom中刪除?你不能隱藏它們嗎?那麼,IIRC,可以完成通過css和媒體查詢純粹 ...(當然,你已經有條件「如果列太寬」,這可能是棘手的,如果採取非常嚴格)

+0

是的,我今天早上居然想着這一點,但它提出在我的腦海裏,因爲我沒有查看通過媒體查詢將列隱藏到主幹事件的方法。也許這是我應該問的更大的問題。 – yekta 2012-08-09 16:01:46

+0

嗯,根據http://stackoverflow.com/questions/1397251/event-detect-when-css-property-changed-using-jquery我想我可以做到這一點。謝謝! – yekta 2012-08-09 16:06:05

+0

但是,如果您要接受接受的答案,則DOM變異事件會折舊。 https://developer.mozilla.org/en-US/docs/DOM/Mutation_events – JayC 2012-08-09 16:08:41

0

也採取通過Twitter看看Bootstrap。我知道這可以處理基於視口大小的更改。 Here's a question根據視口大小處理隱藏div。

(根據記錄,我不是微博的員工也不是我,否則引誘建議這一點。)