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