2012-03-22 119 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