Показать сообщение отдельно
  #1 (permalink)  
Старый 07.03.2012, 21:48
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Вопрос по jquery. Как запретить один из скриптов при клике
В общем что-то бьюсь в одном месте, уже много чего перепробовал, но не хочет корректно работать.
в общем есть два скрипта. Первый скрипт показывает или скрывает форму сообщения об ошибке.
function show_error_descr()
{
clearTimeout(open_timer);
block_click();
$(this).parent().find(".error_descr_block").slideToggle();
	if($(this).parent().find(".error_descr_block").attr("show")=="yes")
	{
		$(this).parent().find(".error_descr_block").attr("show","no");
	}
	else 
		{
		$(this).parent().find(".error_descr_block").attr("show","yes");
		}
}

Второй скрипт при клике в любую область экрана - закрывает форму сообщения об ошибке.

function hide_error_descr()
	{
	clearTimeout(open_timer);
	block_click();
	if($(".error_descr_block").attr("show")=="yes")
	{
	$(document).off('click', hide_error_descr);
	$(".error_descr_block[show=yes]").slideToggle();
	$(this).parent().find(".error_descr_block").attr("show","no");
	}
	}

Функция block_click()
блокирует все обработчики событий на секунду.
function block_click(){
	$(document).off('click', '.bottom_open', open_full_descr);
	$(document).off('click', '.good,.bad', add_rating);
	$(document).off('click', '.show_error_descr',show_error_descr);
	$(document).off('click', hide_error_descr);
	open_timer=setTimeout(function(){
	$(document).on('click', '.bottom_open', open_full_descr);
	$(document).on('click', '.good,.bad', add_rating);
	$(document).on('click', '.show_error_descr',show_error_descr);
	$(document).on('click', hide_error_descr);
	},1000);	
	}


Проблема в том что при клике на блок .show_error_descr выполняется функция show_error_descr, в начале ее идет блокировка всех обработчиков событий (функция block_click()), но почему-то после выполнения функции show_error_descr сразу же запускается функция hide_error_descr, хотя она была заблокирована функцией block_click на секунду, такое ощущение что при клике сразу запускается обе функции, а надо чтобы сработала только одна первая. Помогите решить задачку
Ответить с цитированием