Javascript window.resize在使用Modernizer和Zepto时失败

Javascript window.resize在使用Modernizer和Zepto时失败,javascript,resize,window,modernizr,zepto,Javascript,Resize,Window,Modernizr,Zepto,我在使用JavaScript和Zepto库调整元素大小时遇到问题。当页面加载时,元素可以获得窗口的宽度和高度。我还用alert()测试了window.resize,效果也不错。当我尝试在窗口改变大小时调整元素的大小时,就会出现问题。这是我的JavaScript,它是通过Modernizer加载的: $(document).ready(function() { setTimeout(function(){ window.scrollTo(0, 1); }, 0);

我在使用JavaScript和Zepto库调整元素大小时遇到问题。当页面加载时,元素可以获得窗口的宽度和高度。我还用alert()测试了window.resize,效果也不错。当我尝试在窗口改变大小时调整元素的大小时,就会出现问题。这是我的JavaScript,它是通过Modernizer加载的:

$(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;
});
我还设置了一个工作演示-单击演示上的菜单按钮,选择我要调整大小的元素


谁能告诉我我做错了什么吗?非常感谢。

您正在将
onresize
属性分配给jQuery对象(
$(窗口)
)。您必须将其分配给
窗口。改为在重新调整大小时。

我选中了,这样编写函数,它将工作。 演示在这里

顺便说一句,zepto doc说“bind”是“不推荐的,改为在上使用”


Kolink感谢您的回复,我已经更新了我的代码,但仍然无法工作。我已经在上面的示例和演示中反映了这些变化。另外,我没有使用jQuery,我使用的是Zepto而不是
function foo()
语法,请尝试
var foo=function()
。恐怕不行。在小提琴上,如果您取出对sizePrimaryNavigation()的初始调用,打开菜单,然后调整窗口大小,您将看到它确实执行了,但只执行了一次。据我所知,它应该无限期地调整大小。将
navConfig
内容移动到
sizePrimaryNavigation()
函数中。它需要根据更新后的窗口大小重新计算。同样不行。我以前在jQuery中使用过这种模式,它的工作没有问题。我不明白。您是否尝试绑定到onresize事件?像$(window.bind('onresize',函数(事件){});你好是的,我也试过,但没有成功。
function sizePrimaryNavigation()
{
    navConfig.primaryNav.css(
    {
        'height'     : win.width() - 5,
        'width'        : win.height() - 20
    });

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