jQuery Animate Effect не делает то, что должен - PullRequest
0 голосов
/ 02 марта 2010

JS:

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);

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

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

1 Ответ

1 голос
/ 02 марта 2010

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

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

...