Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2012, 15:31
Новичок на форуме
Отправить личное сообщение для paulo Посмотреть профиль Найти все сообщения от paulo
 
Регистрация: 12.10.2012
Сообщений: 3

Проблема со вторым событие toogle
Здравствуйте!
Есть у меня вот такая конструкция:
<div class="line">
	<div class="logo"></div>
	<div class="spoiler">
		<p>...</p>
		<div class="close"></div>
	</div>
</div>

и такой вот не замысловатый скрипт:
$('.line .logo').toggle(
	function(){
		$(this).parent().children('.spoiler').slideDown('slow');
	},
	function(){
		$(this).parent().children('.spoiler').slideUp('slow');
	}
);
$('.line .spoiler .close').click(function(){
	$(this).parent().slideUp('slow');
});

Если нажимать на лого .spoiler открывается/закрывается без проблем. Но если .spoiler закрыть нажав на .close, нажимать на .logo приходится два раза что бы он опять открылся. Я полагаю что .spoiler просто второй раз пытается закрыться и только потом открывается.

Сори за кривой код и глупый вопрос, но я пока не силён в jquery а проблему надо решить.
Ответить с цитированием
  #2 (permalink)  
Старый 12.10.2012, 15:55
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Почитайте как работают события, точнее последовательность срабатывания.
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 13.10.2012, 15:04
Новичок на форуме
Отправить личное сообщение для paulo Посмотреть профиль Найти все сообщения от paulo
 
Регистрация: 12.10.2012
Сообщений: 3

Сообщение от Skipp Посмотреть сообщение
Почитайте как работают события, точнее последовательность срабатывания.
Почитал но не помогло.
Всё равно не могу понять в чём дело. Направьте на решение, пожалуйста
Ответить с цитированием
  #4 (permalink)  
Старый 13.10.2012, 22:43
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

paulo,

Попробуй такой вариант:
$('.line .logo').toggle(
	function(){
	    $(this).parent().children('.spoiler').slideDown('slow');
	},
	function(){
	    $(this).parent().children('.spoiler').slideUp('slow');
	}
);
$('.line .spoiler .close').click(function ()
{
	$(this).parent().parent().children('.logo').trigger('click', {i: 2});
});

Когда ты делаешь клик по close, то необходимо вызывать toggle (для этого просто запускаем обычный клик на нужном нам элементе). Дополнительный параметр {i: 2} означает, что необходимо вызывать 2-й обработчик для toggle.

Последний раз редактировалось Hoshinokoe, 13.10.2012 в 22:48.
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2012, 21:27
Новичок на форуме
Отправить личное сообщение для paulo Посмотреть профиль Найти все сообщения от paulo
 
Регистрация: 12.10.2012
Сообщений: 3

Спасибо огромное! Никогда бы не додумался
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с постоянным откликом функции на событие zm_sansan Общие вопросы Javascript 31 08.06.2012 18:14
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Отловить событие simple Events/DOM/Window 3 11.05.2011 14:20
какое событие возникает во время формирования html IT-AleX Events/DOM/Window 2 20.02.2009 16:13
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40