Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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 на секунду, такое ощущение что при клике сразу запускается обе функции, а надо чтобы сработала только одна первая. Помогите решить задачку
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2012, 22:35
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Решилось вообще каким-то тупорыльным способом.
Может есть лучше решение?

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);	
	}
	
	
	
	function hide_error_descr()
	{
	clearTimeout(open_timer);
	block_click();
	if($(".error_descr_block").attr("show")=="yes")
	{
	$(".error_descr_block[show=yes]").slideToggle();
	setTimeout(function(){
	$(".error_descr_block").attr("show","no");
		},100);
	}
	
	}
	
	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")
	{
		var temp=$(this).parent().find(".error_descr_block")
		$(this).parent().find(".error_descr_block").attr("show","no");
	}
	else 
		{
		var temp=$(this).parent().find(".error_descr_block")
		setTimeout(function(){
		temp.attr("show","yes");
		},100);
		}
	}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по jquery - как узнать какой тэг? APL Общие вопросы Javascript 7 09.06.2016 15:22
как при клике на фотографию увеличить ее, затемнив фон Ichigeki ExtJS 3 23.06.2011 17:34
.load() - как в загруженном содержимом использовать jquery? rbooz jQuery 14 25.05.2010 12:03
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 09:54
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14