Jquery мешает повторять анимацию, не ломая мой выпадающий список? - PullRequest
1 голос
/ 09 ноября 2009

http://mmowned.org/dragon/slm/menu9.html

В попытке решить очередь анимации в старой версии (menu7.html) я попытался использовать .stop () в выпадающем меню. Проблема в том, что когда вы «останавливаете» выпадающий список на полпути, а затем запускаете его снова, оно ломает меню и распространяется только туда, где остановилось: /

Я уверен, что это действительно просто, но как я могу это исправить?

$(document).ready(function() {  
    var nid=["bottom","nav","news","wow","emu","war","aoc","diablo","prog","trade"];  
    $('li.navhead2').click(function () {  
    var id = $(this).attr('id')  
    var query = jQuery.inArray(id, nid)  
    if (query !== -1 && query !== 0)  
    {  
       $("#menu"+query).slideFadeToggle('slow');  
        if (query !== 1 && query !== 0)  
        {  
        $(this).toggleClass("clicked");  
        }  
        else  
        {  
        $(this).toggleClass("clicked1");  
        }  
    }  
    else if (query === 0)  
    {
    $("[id^=menu]").not("#menu1").slideUp('fast');  
    $("li.navhead2").removeClass("clicked");  
    }  
    });   
 slide("#sliding-navigation", 160, 182, 150, .8);  
  });  

jQuery.fn.slideFadeToggle = function(speed, easing, callback) {  
    return this.stop().animate({opacity: 'toggle', height: 'toggle', queue:false}, speed, easing, callback);  
};

Функция слайдера работает так, как я хочу, но раскрывающийся список не работает (прерывается, как указано ранее), и по какой-то причине мой toggleclass тоже не работает (но на старой версии)

1 Ответ

2 голосов
/ 09 ноября 2009

Вы используете значение toggle для параметра height.
Вы также можете разрешить пользователю прерывать анимацию, щелкая ее снова (часть .stop()).

Если во время анимации я прерву его (скажем, на 50% его высоты), при следующем вызове моя анимация изменится с 50% до 0. Моя следующая будет с 0 до 50%.

Остановить документацию указывает на то, что вы можете указать погоду, чтобы очистить очередь и / или перейти к концу анимации. Это твои дела.

jQuery.fn.slideFadeToggle = function(speed, easing, callback) {  
    return this.stop(true,true).animate({opacity: 'toggle', height: 'toggle', queue:false}, speed, easing, callback);  
};

Обратите внимание на два значения true, добавленные к остановке. Это должно работать.

...