JQuery Анимация продолжает вычитать
Я пытаюсь анимировать элемент списка так же, как это делает mselect, но кажется, что он продолжает вычитать 2px из высоты вместо плюс минус
<script type="text/javascript">
$(document).ready(function() {
$('#name').change(function(){
$('#name option:selected').each( function() {
/*$('.asmListItem').animate({
opacity: "show",
height: "show"
}, 100, "swing", function() {
$('.asmListItem').animate({
height: "+=2px"
}, 50, "swing", function() {
$('.asmListItem').animate({
height: "-=2px"
}, 25, "swing");
});
});*/
$('#select-to')
.append("<li class='asmListItem' value='"+$(this)
.val()+"'><span class='asmListItemLabel'>" + '<b>'+$('#subnam').val() + ' </b>' + $(this)
.text()+"</span><a href=# class='asmListItemRemove'>remove</a></li>");
$(this).remove();
});
});
$('.asmListItemRemove').live('click', function() {
$(this).closest('li').remove();
});
});
есть идеи?
1 ответ
Решение
Кажется, что каждый раз, когда он оживляет, элементы li становятся все меньше и меньше.
Я не знаю, как выглядит ваша разметка, поэтому я попытался воспроизвести ее здесь:
Вместо того, чтобы увеличивать высоту на 2 пикселя, а затем уменьшать ее на 2 пикселя после завершения анимации, я просто сохранил исходное значение высоты, увеличил его на 2, а затем восстановил обратно до высоты оригинала.
$('.asmListItem').animate({
opacity: 'show',
height: 'show'
}, 100, "swing", function() {
var originalHeight = $('.asmListItem').height();
$('.asmListItem').animate({
height: originalHeight + 2 + "px"
}, 50, "swing", function() {
$('.asmListItem').animate({
height: originalHeight + "px"
}, 25, "swing");
});
});