2012-05-25 2 views
0

У меня возникли проблемы с частью сценария, который удаляет количество объектов X времени после того, как он получил класс «скрытый»setTimout щурит переменную JavaScript

selector = getselector($(this).parent().parent()); 
console.log("Clicked Cancel"); 
$(this).parent().parent().addClass('hidden'); 
setTimeout(function() { 
    $(selector).remove(); 
}, 400); 

я редактировал какие-нибудь сценарий от here сделать функцию getselector, так как $ (this) не работает в setTimeout. теперь этот фрагмент кода работает, если вы не запускаете его слишком быстро. проблемы, кажется, что переменная селектор испортится, когда другой узел будет удален в течение временного интервала (в настоящее время 400мса)

, и я не могу думать о простом способе вокруг него. :(

ответ

1

Ответ прост: Не делайте selector глобальный, т.е. использовать var О, и просто хранить элемент вместо того, чтобы пытаться построить селектор:.

var elem = $(this).parent().parent(); 
elem.addClass('hidden'); 
setTimeout(function() { 
    elem.remove(); 
}, 400); 
+1

Почему я не могу думать об этом ... Спасибо :) – Gelunox

-1

Установить переменную со значением true в начале процесса. В действии проверьте, не является ли оно ложным, а затем установите значение false, а затем верните его в значение true, как только закончите. Если вы нажмете его слишком быстро, он проверит вашу переменную, увидит, что она верна снова и снова выполнит действие.

1

Вы также можете поставить очередь на удаление следующим образом, что делает ваш код немного более острым:

$(this).parent().parent().addClass('hidden').delay(400).queue(function() { 
    $(this).remove(); 
}); 
Смежные вопросы