В общем что-то бьюсь в одном месте, уже много чего перепробовал, но не хочет корректно работать.
в общем есть два скрипта. Первый скрипт показывает или скрывает форму сообщения об ошибке.
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 на секунду, такое ощущение что при клике сразу запускается обе функции, а надо чтобы сработала только одна первая. Помогите решить задачку