我有一个客户端应用程序,我正在使用jQuery 1.7.x,Backbone和Underscore。该应用程序有很多列,当窗口调整大小时,我需要调整DOM以推送或弹出列。我遇到了如何在窗口调整大小时可靠地操作DOM的问题,因为事件需要时间来触发,事件堆栈需要时间来清除,并且需要考虑DOM的列数。哦,我正在使用有用的下划线去抖方法和我的调整大小侦听器以及需要触发的这些特定事件的延迟方法。
在窗口调整大小时,我需要弹出列,如果它们不适合水平放置。在窗口缩小比调整大小监听器更快的情况下,我需要进行一些dom清理以便适应所有事情。
在每个resize触发器上遍历DOM上的列并在当前DOM列的循环内计算fit_width并在必要时弹出是否更好?新的调整大小事件可能会改变/中断事情吗?
或者,最好在每个调整大小触发器上为DOM上的列数触发pop_column_if_too_wide吗? 这看起来很糟糕......
通过事件触发器处理所有事情会很好但我依赖的_.defer对于当前循环迭代的快速计算来说不够可靠,因为事件堆栈可能尚未被清除。因此,它最终可能会为同一模块两次触发事件。
也许还有更好的方法。
答案 0 :(得分:1)
他们真的需要从dom中删除吗?你不能隐藏它们吗?那个,IIRC,可以通过css和媒体查询完成纯粹 ...(当然,如果列太宽,你就有了这个条件“,如果非常严格的话可能会很棘手)< / p>
答案 1 :(得分:0)
另请查看Twitter的Bootstrap。我知道这可以根据视口大小处理更改。 Here's a question根据视口大小处理隐藏div。
(为了记录,我不是推特的员工,也不是我被引诱建议的。)