20.10.2014, 17:19
|
Профессор
|
|
Регистрация: 04.02.2012
Сообщений: 196
|
|
Удаление элемента после анимации.
Такая проблема, после анимации нужно удалить элемент. Именно удалить, а не спрятать.
Вот такой код:
$("#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();});
Вообще ничего не удаляет.
Подскажите плиз решение)
|
|
20.10.2014, 17:36
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от Siend
|
$("#M"+i).animate( { top: (y-25)+"px", bot: (x-25)+"px"}, 300, function() {$("#M"+i).remove();});
|
$(this).remove()
|
|
20.10.2014, 17:40
|
Профессор
|
|
Регистрация: 04.02.2012
Сообщений: 196
|
|
УРА! Заработало!!!) а я мучался) спасибо большое) Хотя я и не понял почему прямое обращение к элементу не дало такого же результата)
|
|
20.10.2014, 17:49
|
Профессор
|
|
Регистрация: 04.02.2012
Сообщений: 196
|
|
рони,
Еще такой вопрос:
$("#M"+i).animate( { top y-25)+"px", bot x-25)+"px"}, 300, function() {this.remove();});
код код код
Анимация 2.
Так вот если Анимацию 2 убрать, то все первая воспроизводится нормально, но как только добавляю вторую анимацию, то она сразу же начинает выполняться, опять же не дожидаясь первой. Элементы разные, и анимации вообще в разных функциях, поэтому в колбек первой анимации их не засунуть.
|
|
20.10.2014, 17:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от Siend
|
Хотя я и не понял почему прямое обращение к элементу не дало такого же результата)
|
$("#M"+i).remove(); где взять i и какое значение будет у i когда будет вызов колбек.
|
|
20.10.2014, 17:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от Siend
|
Так вот если Анимацию 2 убрать, то все первая воспроизводится нормально, но как только добавляю вторую анимацию, то она сразу же начинает выполняться, опять же не дожидаясь первой. Элементы разные, и анимации вообще в разных функциях, поэтому в колбек первой анимации их не засунуть.
|
непонял
|
|
20.10.2014, 18:00
|
Профессор
|
|
Регистрация: 04.02.2012
Сообщений: 196
|
|
Вообщем я кажется запутался в свойстве 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){}
и дальше уже все остальное.
|
|
20.10.2014, 18:09
|
Профессор
|
|
Регистрация: 04.02.2012
Сообщений: 196
|
|
рони,
Не помогло. Попытался сделать так:
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;}
Вообще все зависло(
|
|
20.10.2014, 18:14
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
this.remove(); разве работает?
вроде $(this).remove()
|
|
20.10.2014, 18:17
|
Профессор
|
|
Регистрация: 04.02.2012
Сообщений: 196
|
|
this.remove() почему то работает))) но мой while тупо останавливает выполнение всего, даже анимации которая вообщем то по сути не должна останавливаться( сейчас пробую другую реализацию.
|
|
|
|