Как заставить <div>.slideUp работать с .delay () в другом месте - PullRequest
0 голосов
/ 17 июня 2011

Извините за плохой заголовок, который не так легко объяснить в такой короткой области.

Что я пытаюсь сделать: У меня есть небольшая панель уведомлений, которая скользит вниз от верхней части моего сайта, когда вы переходите по ссылке, когда вы не вошли в систему. Она просто говорит «вы не можете зайти сюда» умным способом. После того, как вы щелкнете по нему, он сдвинется вниз, затем с помощью .delay () подождет 2500 мс, а затем снова сдвинется вверх. Мне бы хотелось, чтобы, если вы щелкнете по новой, она отменит задержку, сразу же сдвинет вверх старую и сбьет новую.

Проблема в том, что: Если вы нажмете кнопку, чтобы выключить уведомление снова и снова, он будет ждать окончания задержки .delay, прежде чем перейти к следующему, создавая, таким образом, бесконечный поток уведомлений, через который вам придется ждать. Мне бы хотелось, чтобы при нажатии на новую вкладку она задерживала задержку и сразу переходила туда, чтобы у вас не было задержки, если вы навязчивы или случайно нажали.

Мой сайт: http://thenozzle.net/

Уведомление отключается, когда вы нажимаете ссылки "игры", "проекты", "конкурсы" или "форумы" в меню.

Javascript:

function notifyevent(){
    $('#subscribercontent').slideUp('fast');
    $('#subscribercontent').slideDown('fast').delay(2500).slideUp('fast')
}

Имеет смысл? Я вижу эту проблему повсюду, где, если вы нажимаете несколько раз, она должна дождаться окончания задержки. Но я не хочу избавляться от слайда вверх и вниз, потому что я хочу, чтобы действие-реакция выпало из уведомления, чтобы вы могли связать панель уведомлений с нажатием.

спасибо!

1 Ответ

0 голосов
/ 17 июня 2011

Я решил, на самом деле, благодаря комбинации ответов.

function notifyevent(){
    $('#searchoverflow').slideUp('fast');
    $('#subscribercontent').slideUp('fast');
    $('#subscribercontent').slideDown('fast');
    setTimeout("$('#subscribercontent').stop(true,true).slideUp('fast');", 3000)
}

Я использую setTimeout вместо задержки, затем я использую .stop () не для остановки задержки, а для остановки анимациидо истечения времени ожидания.Если кто-нибудь знает лучший способ, это было бы замечательно, если бы вы убили таймер, если вы нажмете на спам, и люди это сделают.

...