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

时间:2015-08-28 14:45:39

标签: javascript jquery

我有一个resize throttle listener:

$(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));

请注意,这不是一个基于意见的问题,我想知道什么是最佳的表现。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这真的取决于你的代码块是如何分开的,你是否重用了很多代码,我会说每个块都有它自己的resize事件处理程序,如果你不在这个项目中重用我们的代码,我会有一个resize处理程序和分发自定义调整大小消息。通过这种方式,您可以更轻松地调整代码,而无需更改相同的代码数量。