Ошибка window.resize при использовании Modernizr и Zepto - PullRequest
0 голосов
/ 22 марта 2012

У меня проблема с изменением размера элемента с использованием JavaScript и библиотеки Zepto.Когда страница загружается, элемент получает ширину и высоту окна просто отлично.Я также проверил свой window.resize с помощью alert (), и это тоже хорошо работает.Мои проблемы возникают, когда я пытаюсь изменить размер элемента, когда окно меняет размер.Вот мой JavaScript, который загружается через Modernizr:

$(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/ Нажмите кнопку меню в демонстрационной программе для элемента, размер которого я пытаюсь изменить.

Может кто-нибудь сказать мне, что я делаю не так, пожалуйста?Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 10 марта 2013

Я проверил, напишите такую ​​функцию, она будет работать. демо здесь

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

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

и, кстати, zepto doc говорит, что «bind» это «устарело, используйте вместо».

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

}
$(window).resize(sizePrimaryNavigation);
// window.onresize = sizePrimaryNavigation;
// will work too
0 голосов
/ 22 марта 2012

Вы присваиваете свойство onresize объекту jQuery ($(window)).Вместо этого вы ДОЛЖНЫ назначить его на window.onresize.

...