Проблема со вторым событие 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 а проблему надо решить. |
Почитайте как работают события, точнее последовательность срабатывания.
|
Цитата:
Всё равно не могу понять в чём дело. Направьте на решение, пожалуйста :cray: |
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. |
Спасибо огромное! Никогда бы не додумался:)
|
Часовой пояс GMT +3, время: 21:48. |