Обратный вызов fadeToggle jQuery до, а не после

Есть ли способ назначить обратный вызов до того, как анимация затухания произойдет в fadeToggle? Я настраиваю положение прокрутки и хотел бы настроить его до появления объекта, а не после.


person Aram Kocharyan    schedule 25.02.2011    source источник
comment
Если вы знаете размер объекта, как насчет простой настройки позиций прокрутки перед вызовом fadeToggle?   -  person justkt    schedule 25.02.2011
comment
Я пробовал это, но причина, по которой мне нужно настроить полосы прокрутки, заключается в том, что настройка display: none (насколько я знаю, что происходит с fadeToggle) приводит к последующему сбросу полос прокрутки. Если вы настроили раньше, и объект скрыт, когда он появится, положение прокрутки не будет установлено.   -  person Aram Kocharyan    schedule 25.02.2011


Ответы (3)


Обратный вызов дает вам возможность выполнить что-то после завершения данного действия. Если вам нужно что-то сделать перед операцией (затухание), просто сделайте это перед вызовом самой функции.

person Shekhar_Pro    schedule 25.02.2011

подойдет ли вам переопределение fadeToggle? если да, то нажмите на ссылку ниже :)

Переопределить функции jQuery

person Val    schedule 25.02.2011

Все, что вам нужно сделать, это вызвать вашу функцию или запустить любой код сразу после fadeToggle:

element.fadeToggle('fast');
element.scrollTop(300);

Это немедленно установит положение прокрутки, после чего последует эффект затухания.

Вот что конкретно у меня было: visible и hidden — это элементы, которые я только что назвал vars.

visible.fadeToggle('fast', function() {
    hidden.fadeToggle('fast');
    hidden.scrollTop(top_value);
});

Когда visible скрыто, вызывается обратный вызов, и скрытый элемент становится видимым. Позиция прокрутки устанавливается сразу после этого, поэтому вы видите изменение до того, как исчезновение завершится. Таким образом, вы получите плавное затухание и сохраните положение прокрутки обоих элементов одинаковым.

person Aram Kocharyan    schedule 25.02.2011