Удаление элемента после анимации.
Такая проблема, после анимации нужно удалить элемент. Именно удалить, а не спрятать.
Вот такой код: $("#M"+i).animate( { top: (y-25)+"px", bot: (x-25)+"px"}, 300).remove(); Удаляет элемент сразу же, не дожидаясь конца анимации. Вот такой код: $("#M"+i).animate( { top: (y-25)+"px", bot: (x-25)+"px"}, 300, function() {$("#M"+i).remove();}); Вообще ничего не удаляет. Подскажите плиз решение) |
Цитата:
$(this).remove() |
УРА! Заработало!!!) а я мучался) спасибо большое) Хотя я и не понял почему прямое обращение к элементу не дало такого же результата)
|
рони,
Еще такой вопрос: $("#M"+i).animate( { top:(y-25)+"px", bot:(x-25)+"px"}, 300, function() {this.remove();}); код код код Анимация 2. Так вот если Анимацию 2 убрать, то все первая воспроизводится нормально, но как только добавляю вторую анимацию, то она сразу же начинает выполняться, опять же не дожидаясь первой. Элементы разные, и анимации вообще в разных функциях, поэтому в колбек первой анимации их не засунуть. |
Цитата:
|
Цитата:
|
Вообщем я кажется запутался в свойстве queue.
Вот первая анимация: $("#M"+i).animate( { top: (y-25)+"px", bot: (x-25)+"px"},300, function() {this.remove();}); а вот что после нее происходит далее: $("#M"+i).animate( { top: (y-25)+"px" }, { queue:true, duration:300 } ).animate( { bot: (x-25)+"px" }, { queue:false, duration:300 } ); Но даже если я меняю на true все равно все работает криво. Я уже понял что скрипт выполняется дальше не зависимо от анимации, и походу в этом и есть мой косяк. Я удаляю элементы потому что потом будет пересоздаваться элемент с таким же именем, и видимо он просто не успевает удалится. Вообщем думаю решение такое: var rdy=false; $("#M"+i).animate( { top: (y-25)+"px", bot: (x-25)+"px"},300, function() {this.remove(); rdy=true;}); while(!rdy){} и дальше уже все остальное. |
рони,
Не помогло. Попытался сделать так: rdyCurMenu = 0; rdyFullMenu = ceMenu; for (var i = 0; i < ceMenu; i++) { var angle = (Math.PI * 2 / ceMenu) * i; var x = xMenu; var y = yMenu; $("#M"+i).animate( { top:(y-25)+"px", bot:(x-25)+"px"},300, function() {this.remove();rdyCurMenu++}); } while(!rdyMenu){if(rdyCurMenu==rdyFullMenu)rdyMenu=true;} Вообще все зависло( |
this.remove(); разве работает?
вроде $(this).remove() |
this.remove() почему то работает))) но мой while тупо останавливает выполнение всего, даже анимации которая вообщем то по сути не должна останавливаться( сейчас пробую другую реализацию.
|
Часовой пояс GMT +3, время: 17:40. |