0

我有一个正在使用的客户端应用程序,我正在使用 jQuery 1.7.x、Backbone 和 Underscore。该应用程序有很多列,并且随着窗口大小的调整,我需要调整 DOM 以推送或弹出一列。我遇到了如何在调整窗口大小时可靠地操作 DOM 的问题,因为事件需要时间来触发,事件堆栈需要时间来清除并且需要考虑 DOM 的列数。哦,我正在使用有用的下划线去抖动方法和我的调整大小侦听器和这些需要触发的特定事件的延迟方法。

在调整窗口大小时,如果列不适合水平放置,我需要弹出列。在窗口缩小的速度比触发的调整大小侦听器更快的情况下,我需要进行一些 dom 清理以使所有内容都适合。

  • 在每个调整大小触发器上循环遍历 DOM 上的列并在当前 DOM 列的循环内计算 fit_width 并在必要时弹出是否更好?新的调整大小事件可能会改变/中断事情吗?

  • 或者最好在每个调整大小触发器上触发 pop_column_if_too_wide 以获取 DOM 上的列数?这似乎很糟糕......

通过事件触发器处理所有事情会很好,但是我所依赖的 _.defer 不够可靠,无法快速计算当前循环的迭代,因为事件堆栈可能尚未被清除。因此,它最终可能会为同一个模块触发两次事件。

也许还有更好的方法。

4

2 回答 2

1

他们真的需要从dom中移除吗?你不能把它们藏起来吗?那,IIRC,可以纯粹通过css和媒体查询来完成......(当然你有那个条件“如果列太宽”,如果非常严格的话可能会很棘手)

于 2012-08-09T15:52:37.163 回答
0

还可以看看Twitter 的Bootstrap。我知道这可以根据视口大小处理更改。 这是一个基于视口大小处理隐藏 div 的问题。

(郑重声明,我不是 Twitter 的员工,也没有被诱使提出这个建议。)

于 2012-08-09T19:45:33.673 回答