Блокировка на время анимации
Добрый день, вот сижу вспоминаю и не могу вспомнить. Есть анимация, которая вызывается через функцию..
function test(){
$(".test").fadeTo("slow",0.4,function(){
... // показываю сообщение
});
}
Я хочу чтобы до момента завершения fadeTo юзер не мог никуда нажать. Просто дальше по коду у меня идет обработка того же элемента:
$(".test").click(function(){
$(this).fadeOut("slow");
});
получается пока идет затемнение, юзер может нажать на всплывающий элемент и он начнет пропадать(fadeOut).. хотя действие после fadeTo будет все равно выполнено(показ сообщения).. Хотелось бы чтобы во время выполнения fadeTo юзер не мог ничего нажать)) |
никак нельзя. только если выставлять в каждом обработчике lock-переменную, но оно вам надо?
|
Лучше вызовите stop перед fadeOut.
А так — можно показать див-заглушку на весь экран, которая будет перехватывать клики. |
просто я читал про метод arguments.callee там же есть такая тема, что функция выполниться один раз.. У меня была такая реализация, но я так и не понял до конца принцип работы.. может кто подскажет как работает сие чудо) Я понимаю, что это ссылка на туже функцию, так ведь?
|
arguments.callee указывает на функцию, вызвавшую текущую функцию. Чем оно Вам поможет?
|
ну вот например у меня есть такая конструкция. которая позволяет блокировать повторные нажатия:
$("#menu table").one("click", function (event) {
var callee = arguments.callee;
if ($(event.target).is("#menu td:not(#add_cook)")) {
$("#menu td:not(#add_cook)").not($(event.target)).css('backgroundColor','');
$(event.target).css('backgroundColor','#740D13');
$id = $(event.target).attr('id');
$("#text").hide("drop",{direction: 'left'},600,function(){
$(this).load("php/"+$id+".php",function(){
$(this).width(760);
$conH = $(this).height();
if($("#content").height() == $conH){$time = 0;}
else{$time = 1000;}
$("#content").animate({'height':$conH},$time,function(){
$("#text").show("drop",{direction: 'right'},400);
$("#menu table").one("click", callee);
});
});
});
}
});
|
| Часовой пояс GMT +3, время: 01:27. |