2012-08-09 46 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。

(根据记录,我不是微博的员工也不是我,否则引诱建议这一点。)