Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 使用主干事件调整窗口大小时的DOM操作_Backbone.js_Backbone Events_Window Resize - Fatal编程技术网

Backbone.js 使用主干事件调整窗口大小时的DOM操作

Backbone.js 使用主干事件调整窗口大小时的DOM操作,backbone.js,backbone-events,window-resize,Backbone.js,Backbone Events,Window Resize,我有一个客户端应用程序,我正在使用jQuery 1.7.x、主干和下划线。该应用程序有许多列,随着窗口大小的调整,我需要调整DOM以推送或弹出一列。我遇到了一个问题,即如何在调整窗口大小时可靠地操作DOM,因为触发事件需要时间,清除事件堆栈需要时间,并且需要考虑DOM的列计数。哦,我在resizelistener中使用了有用的下划线去Bounce方法,在需要触发的特定事件中使用了defer方法 在调整窗口大小时,如果列不适合水平方向,我需要弹出列。如果窗口收缩的速度比启动调整大小侦听器的速度快,

我有一个客户端应用程序,我正在使用jQuery 1.7.x、主干和下划线。该应用程序有许多列,随着窗口大小的调整,我需要调整DOM以推送或弹出一列。我遇到了一个问题,即如何在调整窗口大小时可靠地操作DOM,因为触发事件需要时间,清除事件堆栈需要时间,并且需要考虑DOM的列计数。哦,我在resizelistener中使用了有用的下划线去Bounce方法,在需要触发的特定事件中使用了defer方法

在调整窗口大小时,如果列不适合水平方向,我需要弹出列。如果窗口收缩的速度比启动调整大小侦听器的速度快,我需要进行一些dom清理,以使所有内容都适合

  • 在每个resize触发器上循环DOM上的列,并计算当前DOM列的循环内的fit_宽度,并在必要时弹出是否更好?新的调整大小事件是否会改变/中断事情

  • 或者,如果DOM上的列数在每个调整大小触发器上都太宽,那么触发pop_column_会更好吗? 这看起来很糟糕

通过事件触发器处理一切都会很好,但是我所依赖的u.defer对于当前循环迭代的快速计算来说不够可靠,因为事件堆栈可能尚未清除。因此,它可能会为同一模块触发两次事件

也许还有更好的方法。

它们真的需要从dom中删除吗?你不能把它们藏起来吗?IIRC完全可以通过css和媒体查询来实现。。。(当然,你会遇到“如果专栏太宽”的情况,如果采取非常严格的措施,这可能会很棘手)

还可以看看Twitter。我知道这可以处理基于视口大小的更改。处理基于视口大小的隐藏div


(作为记录,我不是推特的雇员,也不是被引诱提出这一点的。)

是的,今天早上我确实想到了这一点,但我把它放在了脑海中,因为我没有找到一种方法将通过媒体查询隐藏专栏与主干事件联系起来。也许这是我应该问的一个更大的问题。嗯,我想我可以用它来解决这个问题。谢谢不过,如果你想得到公认的答案,DOM突变事件会被低估。哦,谢谢你告诉我,这确实改变了一切。虽然我可以根据在调整大小触发器期间不可见且仍在主干集合中的内容触发事件?