jquery检测窗口调整大小

时间:2013-02-25 00:12:50

标签: jquery dynamic width detect window-resize

我对我正在研究的有关检测窗口大小调整的网站有疑问。我知道这已经在前面讨论过了,我已经阅读了很多讨论,但却无法让它发挥作用。我只是在学习jquery。

 $(function(){
    var viewPortWidth = $(window).width();
    if (viewPortWidth > 1900)
    {
       $('#mainbio, #footerlinks').addClass('extraWide')
    }
    else if (viewPortWidth > 1400)
    {
       $('#mainbio, #footerlinks').addClass('wide')
    }
    else if (viewPortWidth > 1000) 
    {
       $('#mainbio, #footerlinks').addClass('standard')
    }
    else if (viewPortWidth > 700)
    {
       $('#mainbio, #footerlinks, #twitter, #facebook, #flickr,   #lastfm').addClass('narrow')
    }
    else 
    {
       $('#mainbio, #footerlinks, #twitter, #facebook, #flickr, #lastfm').addClass('extraNarrow')
    }
 });

这是我到目前为止所做的并且它工作正常,但仅限于初始加载。我想知道是否有人可以帮助我调整它以便它可以动态工作 - 所以我可以看到更改,如果我手动调整我的浏览器,而不刷新?

谢谢!

2 个答案:

答案 0 :(得分:7)

您可以使用.resize()回拨此功能。

e.g。

var detectViewPort = function(){
    var viewPortWidth = $(window).width();
    if (viewPortWidth > 1900)
    //...The rest of your above code.
};

$(function(){
  detectViewPort();
});

$(window).resize(function () {
   detectViewPort();
});

可能有另一个/更好的方法,但这是我所知道的选项。

答案 1 :(得分:1)

目前,这是一个自调用匿名函数,因此只要页面加载就会立即运行(因此会运行一次)。

要在调整窗口大小时让它运行,您需要在窗口上注册r​​esize事件(完整文档在这里http://api.jquery.com/resize/)。

如果您更新该行:

  

$(function(){

所以它读取

  

$(window).resize(function(){

只要调整窗口浏览器的大小,它就会被调用。