Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2014, 16:19
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 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();});
Вообще ничего не удаляет.

Подскажите плиз решение)
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2014, 16:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,789

Сообщение от Siend
$("#M"+i).animate( { top: (y-25)+"px", bot: (x-25)+"px"}, 300, function() {$("#M"+i).remove();});
$(this).remove()
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2014, 16:40
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

УРА! Заработало!!!) а я мучался) спасибо большое) Хотя я и не понял почему прямое обращение к элементу не дало такого же результата)
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2014, 16:49
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

рони,
Еще такой вопрос:

$("#M"+i).animate( { topy-25)+"px", botx-25)+"px"}, 300, function() {this.remove();});

код код код

Анимация 2.

Так вот если Анимацию 2 убрать, то все первая воспроизводится нормально, но как только добавляю вторую анимацию, то она сразу же начинает выполняться, опять же не дожидаясь первой. Элементы разные, и анимации вообще в разных функциях, поэтому в колбек первой анимации их не засунуть.
Ответить с цитированием
  #5 (permalink)  
Старый 20.10.2014, 16:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,789

Сообщение от Siend
Хотя я и не понял почему прямое обращение к элементу не дало такого же результата)
$("#M"+i).remove(); где взять i и какое значение будет у i когда будет вызов колбек.
Ответить с цитированием
  #6 (permalink)  
Старый 20.10.2014, 16:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,789

Сообщение от Siend
Так вот если Анимацию 2 убрать, то все первая воспроизводится нормально, но как только добавляю вторую анимацию, то она сразу же начинает выполняться, опять же не дожидаясь первой. Элементы разные, и анимации вообще в разных функциях, поэтому в колбек первой анимации их не засунуть.
непонял
Ответить с цитированием
  #7 (permalink)  
Старый 20.10.2014, 17:00
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 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){}

и дальше уже все остальное.
Ответить с цитированием
  #8 (permalink)  
Старый 20.10.2014, 17:09
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 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;}


Вообще все зависло(
Ответить с цитированием
  #9 (permalink)  
Старый 20.10.2014, 17:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,789

this.remove(); разве работает?
вроде $(this).remove()
Ответить с цитированием
  #10 (permalink)  
Старый 20.10.2014, 17:17
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

this.remove() почему то работает))) но мой while тупо останавливает выполнение всего, даже анимации которая вообщем то по сути не должна останавливаться( сейчас пробую другую реализацию.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранять HTML-теги после редактирования элемента 2chan Элементы интерфейса 13 12.10.2014 10:42
Возврат значения функции после завершения анимации (затухания) grego jQuery 5 16.04.2013 21:25
Выполнить функцию после окончания всей анимации De-Luxis jQuery 2 24.11.2011 15:11
Удаление элемента после fadeOut(); virus-07 jQuery 3 08.09.2011 13:14
Текст после элемента Vulkan Events/DOM/Window 3 15.10.2010 10:59