Javascript 重新计算浏览器调整大小后的宽度

Javascript 重新计算浏览器调整大小后的宽度,javascript,jquery,Javascript,Jquery,我正在运行第三方脚本,它在加载时计算元素的宽度。它工作得很好,但我有一个响应迅速的网站,当我重新调整浏览器的大小时,元素不再正确显示 以下是用于计算宽度的代码: var w = ticker.width(); if (label.length) w -= label.outerWidth() + parseFloat(label.css("margin-right")); if (controls.length) w -= controls.outerWidth() + parseFloat(c

我正在运行第三方脚本,它在加载时计算元素的宽度。它工作得很好,但我有一个响应迅速的网站,当我重新调整浏览器的大小时,元素不再正确显示

以下是用于计算宽度的代码:

var w = ticker.width();
if (label.length) w -= label.outerWidth() + parseFloat(label.css("margin-right"));
if (controls.length) w -= controls.outerWidth() + parseFloat(controls.css("margin-left"));
news.css("width", w);

调整浏览器大小时,如何修改脚本的这一部分以重新计算宽度?

以下是最有效的方法

$(window).on('resize', function(){
   //your code to calculate the width
});
$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
    this.resizeTO = setTimeout(function() {
      $(this).trigger('windowResize');
    }, 500); 
});
$(window).on('windowResize', function() {
   console.log($(window).width()); // calculating here
});

设置超时的原因是窗口需要一些时间来设置宽度,但这是经典的
窗口。在设置之前调整事件get触发器的大小

$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
    this.resizeTO = setTimeout(function() {
      $(this).trigger('windowResize');
    }, 500); 
});
$(window).on('windowResize', function() {
   console.log($(window).width()); // calculating here
});

超时的原因是窗口需要一些时间来设置宽度,但是经典的
窗口。resize
事件在设置之前会触发get触发器

非常好、干净和实用。您能解释一下为什么一个是resize()而另一个是on()?windowResize是我传递的自定义事件,所以我使用on()哦,这就解释了。谢谢你!非常好,干净实用。你能解释一下为什么一个是resize()而另一个是on()?windowResize是我传递的自定义事件,所以我在()上使用了它。哦,这就解释了。谢谢你!