Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема со вторым событие toogle (https://javascript.ru/forum/misc/32344-problema-so-vtorym-sobytie-toogle.html)

paulo 12.10.2012 15:31

Проблема со вторым событие 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 а проблему надо решить.

Skipp 12.10.2012 15:55

Почитайте как работают события, точнее последовательность срабатывания.

paulo 13.10.2012 15:04

Цитата:

Сообщение от Skipp (Сообщение 209654)
Почитайте как работают события, точнее последовательность срабатывания.

Почитал но не помогло.
Всё равно не могу понять в чём дело. Направьте на решение, пожалуйста :cray:

Hoshinokoe 13.10.2012 22:43

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.

paulo 14.10.2012 21:27

Спасибо огромное! Никогда бы не додумался:)


Часовой пояс GMT +3, время: 21:48.