2012-03-22 76 views
0

我在使用JavaScript和Zepto庫調整元素的大小時遇到​​問題。當頁面加載元素時,窗口的寬度和高度都很好。我也用alert()測試了我的window.resize,並且工作正常。當我在窗口更改大小時嘗試調整元素的大小時,會出現問題。這裏是我的JavaScript它通過Modernizr的加載:使用Modernizr和Zepto時window.resize失敗

$(document).ready(function() 
{ 
    setTimeout(function(){ 
     window.scrollTo(0, 1); 
    }, 0); 

    var navConfig = 
    { 
     winWidth  : $(window).width(), 
     winHeight  : $(window).height(), 
     primaryNav  : $('#primaryNav'), 
     openPrimaryNav : $('#openPrimaryNav'), 
     closePrimaryNav : $('#closePrimaryNav') 
    } 

    function sizePrimaryNavigation() 
    { 
     navConfig.primaryNav.css(
     { 
      'height' : navConfig.winHeight - 5, 
      'width'  : navConfig.winWidth - 20 
     }); 
    } 

    function primaryNavigation() 
    { 
     navConfig.openPrimaryNav.bind('click', function() 
     { 
      navConfig.primaryNav.addClass('open'); 
     }); 

     navConfig.closePrimaryNav.bind('click', function() 
     { 
      navConfig.primaryNav.removeClass('open'); 
     }); 
    } 

    sizePrimaryNavigation(); 

    primaryNavigation(); 

    window.onresize = sizePrimaryNavigation; 
}); 

我也成立了一個工作演示 - http://jsfiddle.net/nicklansdell/DWbNS/2/點擊演示了我試圖調整元素的菜單按鈕。

有誰能告訴我我做錯了嗎?提前謝謝了。

+0

你試過綁定到onresize事件嗎?像$(window).bind('onresize',function(event){}); – hradac 2012-03-22 13:02:53

+0

嗨。是的,我也嘗試過,沒有成功。 – mtwallet 2012-03-22 13:11:23

回答

1

我查過了,寫了這樣的函數,它會起作用。 演示是在這裏

http://jsfiddle.net/DWbNS/7/

http://jsfiddle.net/DWbNS/9/

順便說一句,仄醫生說 「綁定」 是 「不推薦使用,請使用來代替。」

function sizePrimaryNavigation() 
{ 
    navConfig.primaryNav.css(
    { 
     'height'  : win.width() - 5, 
     'width'  : win.height() - 20 
    }); 

} 
$(window).resize(sizePrimaryNavigation); 
// window.onresize = sizePrimaryNavigation; 
// will work too 
0

您正在將onresize屬性分配給jQuery對象$(window))。您必須將其分配給window.onresize

+0

Kolink感謝您的回覆我已更新我的代碼,但它仍然無效。我已經反映了上述示例和演示中的更改。另外,我不使用jQuery,而是使用Zepto – mtwallet 2012-03-22 12:54:01

+0

而不是使用'function foo()'語法,而是嘗試'var foo = function()'。 – 2012-03-22 12:54:38

+0

不好,我很害怕。在小提琴上,如果你把初始的調用sizePrimaryNavigation()打開菜單,然後調整窗口的大小,你會看到它執行但只有一次。據我所知,它應該無限期地進行調整。 – mtwallet 2012-03-22 13:02:37