窗口大小调整-在哪里听它

window resize - where to listen for it?

本文关键字:在哪里 调整 窗口大小      更新时间:2023-09-26

我有一个调整油门大小的监听器:

$(window).on('resize', Foundation.utils.throttle(function(e){
}, 300));

从性能的角度来看,以下两种方式是最好的吗?

a)将其放在我的主类中,并在触发事件中。在任何需要做一些调整大小的类中,我会监听事件并做出反应。

主类:

$(window).on('resize', Foundation.utils.throttle(function(e){       
    $(document).trigger("my-resize-event");
}, 300));

在我的其他类需要响应时,窗口的大小调整:

$(document).on("my-resize-event", function(e){
        //do stuff
});

或者,b)在我的每个类中,需要做一些关于窗口调整大小的事情,放置调整大小节流器,这将在许多类中重复此代码:

$(window).on('resize', Foundation.utils.throttle(function(e){
    //do stuff
}, 300));

请注意,这不是一个基于意见的问题,我想知道在性能方面什么是最好的。

绝对有必要这样做吗?我这么问的唯一原因是:a)调整事件大小,改变页面的外观往往看起来有点笨拙的屏幕上,和b)如果你想改变的只是格式,你通常可以使用CSS类完成你想要做的事情。CSS3增加了很多功能,大多数现代浏览器都支持其中的很多功能。

无论如何,要回答你的主要问题,最简单的方法是让其他子类订阅事件,以便它可以级联到任何侦听器。
如果相反,则意味着在声明resize事件时需要传递更复杂的引用,并且还可能遇到竞态条件,即在事件侦听器初始化之前未加载类。

这真的取决于你的代码块是如何分开的,你重用你的代码很多,我会说每个块有它自己的resize事件处理程序,如果你不重用我们的代码在这个项目中,我会有一个resize处理程序和分发自定义的resize消息。这样,您可以更轻松地调整代码,而不必在x个文件中更改相同的代码。