Чередование второго щелчка jQuery не работает?

http://jsfiddle.net/motocomdigital/uTV5k/18/

Я обновил с помощью переключателя вместо щелчка, хотя до сих пор не могу получить плавное чередование.

У меня есть смесь javascript и jquery.

Я пытаюсь получить элемент, поэтому при нажатии на него запускается анимация (открывается). А по второму клику анимация доходит до начальной точки (закрыть).

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

$('.home-module').toggle - это бит, с которым у меня проблемы.

Смотрите скрипт ниже...

$(window).load(function(){

    $(window).bind("orientationchange resize", function(e) {

        $('.home-module').each(function() {

            var homeModule  = $(this).height(),
                homeTitle   = $(this).find('.home-title-button').outerHeight(),
                homeStart   = homeModule - homeTitle,
                homeOpen    = false;

            $(this).find('.home-title').css("top", homeStart + "px");

            $('.home-module').toggle(
                function() {
                    // first alternation
                    $(this).find('.home-title').animate({ top: homeStart + "px" });
                },
                function() {
                    // second alternation
                    $(this).find('.home-title').animate({ top: 0 + "px" });
                }
            );

        }); 

    }).trigger("resize");

});

Кажется, что он действительно не реагирует на нажатие анимации, а второй щелчок / чередование действительно задерживается и делает странные вещи?

Спасибо


Мой исходный код...

$(window).load(function(){

    $(window).bind("orientationchange resize", function(e) {

        $('.home-module').each(function() {

            var homeModule  = $(this).height(),
                homeTitle   = $(this).find('.home-title-button').outerHeight(),
                homeStart   = homeModule - homeTitle,
                homeOpen    = true;

            $(this).find('.home-title').css("top", homeStart + "px");

            $('.home-module').on('click', function () {

                if (homeOpen) {

                    $(this).find('.home-title').animate({ top: homeStart + "px" });
                    homeOpen = false;

                } else {

                    $(this).find('.home-title').animate({ top: 0 + "px" });
                    homeOpen = true; 

                }
            });

        }); 

    }).trigger("resize");

});

person Joshc    schedule 05.02.2012    source источник
comment
Похоже, что для параметра homeOpen никогда не будет установлено значение true. Должен ли homeOpen в else устанавливать значение true?   -  person Eric Witchin    schedule 06.02.2012
comment
также, вероятно, неплохо прикрепить событие клика к this вместо .home-module   -  person Ilia G    schedule 06.02.2012
comment
Кажется, я путаюсь. Там нет ничего, чтобы быть равным тоже. Я просто два чередования на клик. Может быть, мне не нужны операторы if и else   -  person Joshc    schedule 06.02.2012
comment
может быть, я должен использовать .toggle   -  person Joshc    schedule 06.02.2012
comment
Я сделал скрипку jsfiddle.net/motocomdigital/uTV5k/18. Как вы можете видеть в моей скрипке, функция щелчка даже не скользит. При нажатии div.home-mod информация div.mod-info должна перемещаться вверх, а при втором щелчке она должна возвращаться на прежнее место.   -  person Joshc    schedule 06.02.2012


Ответы (1)


homeOpen всегда имеет значение false, поэтому ваше условие if (homeOpen) никогда не выполняется.

person Bruno Silva    schedule 05.02.2012
comment
Я пытался использовать toggle вместо onclick, но он ведет себя странно. Проходит первое чередование, с небольшой задержкой, а второе чередование действительно с задержкой и потом подпрыгивает - не очень надежно. - person Joshc; 06.02.2012
comment
Я предлагаю вам вернуть исходный код, вы неправильно настроили homeOpen. Для homeOpen необходимо установить значение true, иначе вам нужно поменять местами назначения внутри блоков if/else. - person Bruno Silva; 06.02.2012
comment
Спасибо, я пробовал это выше, посмотрите мой исходный код с вашим предложением. Я попытаюсь сделать скрипку, возможно, потому что она ведет себя странно. - person Joshc; 06.02.2012
comment
Как вы можете видеть в моей скрипке, функция щелчка даже не перемещает ее в верхнюю позицию? При нажатии div.home-mod информация div.mod-info должна перемещаться вверх, а при втором щелчке — возвращаться на прежнее место. - person Joshc; 06.02.2012
comment
Удивительный человек, действительно ценю это! Спасибо за вашу помощь. Джош - person Joshc; 06.02.2012