Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2011, 21:11
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

2 события, 1 действие
<div class="green_message"><a href="#">x</a><p>Сообщение</p></div>

Код:
.green_message {
background-color: #AEFFAE;
border: 1px solid green;
display: none;
}
.green_message p {
padding: 8px;
}
.green_message a {
float: right;
margin-right: 3px;
cursor: pointer;
text-decoration: none;
color: #333333;
}
.green_message a:hover {
color: green;
text-decoration: none;
}
function hideMessage() {
    alert('функция вызвана'); //добавлено для наглядности. функция вызывается явно раньше delay('3000');
    $('.green_message').hide('blind', 700);
};

$('.green_message').fadeIn(700, function(){
    $(this).delay('3000');
    hideMessage();
});

$('.green_message a').click(function(event){
    event.preventDefault();
    hideMessage();
});

Пытаюсь сделать всплывающее окошко c сообщением в стиле ютуба, чтобы оно само закрывалось через 3 секунды, или чтобы его можно было закрыть крестиком. Для скрытия использую эффект "blind" из jQuery_UI. Проблема в том, чтобы предотвратить выполнение функции второй раз. Сейчас если нажать крестик - анимация скрытия блока происходит 2 раза. Пробовал извращаться с глобальной булевой переменной, ничего не вышло. Нид хэлп. =\ Может как-то сделать delay другим способом?

Последний раз редактировалось Freakmeister, 16.06.2011 в 21:17.
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2011, 22:10
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

setTimeout(hideMessage, 3000)
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2011, 22:41
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Используй .delay
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2011, 09:42
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

А я что использую?)
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2011, 12:00
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Так используй delay:
$(this).delay('3000').hideMessage();

а не
$(this).delay('3000');
    hideMessage();
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #6 (permalink)  
Старый 21.06.2011, 14:16
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

$(this).delay('3000').hideMessage();
не работает.
hideMessage это функция, а не метод, к ней нельзя обращаться таким образом.

Сделал так, вроде работает:

var canHide=true;
function hideMessage() {
    if (canHide) {
    $('.green_message').hide('blind', 700);
    }
    canHide=false;
};

$('.green_message').fadeIn(700, function() {
    setTimeout(hideMessage, 3000);
});

$('.green_message a').click(function(event) {
    hideMessage();
    event.preventDefault();
});

Последний раз редактировалось Freakmeister, 21.06.2011 в 14:25.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не срабатывают события на элементе <option> DreamTheater Events/DOM/Window 2 14.06.2011 20:24
Прерывание события на границе двух блоков miller Events/DOM/Window 0 25.06.2010 20:58
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16