2010-03-02 1 views
-1

The JS:JQuery Animate Эффект не делать то, что его предполагается

var dialog = jQuery('#dialog'); 
dialog.animate({ 
    'top':'-4px', 
    'display':'toggle' 
}, 300); 

В CSS:

#dialog { 
    display: none; 
    position: relative; 
    width: 180px; 
    height: auto; 
    margin-left: -20px; 
    top: -15px; 
} 

Проблема:

одушевленного выполняет и DIV появляется в поле зрения, но после того, как анимация выполняется, и он снова скрывает div, но остается в новом анимированном положении. Я знаю это, потому что он добавляет inline style = "top: -4px", но встроенный стиль отображения исчезает после выполнения анимации.

Другая проблема заключается в том, что это диалоговое окно с кнопкой отмены, поэтому, даже если я добавляю обратный вызов dialog.show(); после завершения анимации. Кнопка отмены не работает.

Отменить кнопку одушевленные:

dialog.animate({ 
    'top':'-15px', 
    'display':'toggle' 
}, 300); 

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

Я пропустил что-то очевидное здесь? Я использовал анимацию раньше и никогда не сталкивался с этой проблемой.

ответ

1

Вместо 'display':'toggle' использовать 'show':'toggle'

Это должно решить обе проблемы.

+0

Это, казалось, исправить мою первую проблему, но ничего не делает для второго. Он будет перемещаться, но не исчезать, когда вы нажимаете «Отмена». Мое временное решение такого рода работ заключалось в том, чтобы анимировать непрозрачность и установить обратный вызов, который скрывает элемент, чтобы вы могли щелкнуть по нему. – Mark

+0

@Mark - Когда я нажимаю отменить здесь, он оживляет и уходит, вы используете '' show ':' toggle'' при отмене также? Вот что я имею: '$ (" # cancel "). Click (function() {dialog.animate ({'top': '- 15px', 'show': 'toggle'}, 300);});' –

+0

Я дам ему еще один выстрел. Может быть, это что-то в CSS или javascript, где это вызывает проблему? Потому что я сделал это так, как вы говорите раньше, но по какой-то причине он не работает в этом случае. Очень расстраивает. – Mark

Смежные вопросы