Я реализовал пример всплывающего окна «рычание» из книги «jquery: новичок для ниндзя», в основном он показывает всплывающее окно со стилем рычания в вашем браузере, которое можно закрыть, щелкнув в нем ссылку «закрыть».Код работает отлично, но я хочу улучшить его, через некоторое время появившееся всплывающее окно fadeOut, ЕСЛИ пользователь никогда не нажимал на него, чтобы закрыть его (это может быть довольно раздражающим, когда приходится закрывать их).Исходный код выглядит следующим образом:
У меня есть этот простой div в моем HTML, и он стилизован в соответствии с примером в книге
<div id="message_box">
</div>
, а вот код jquery (опять-таки прямойиз книги):
/**
* function that adds notices to growl like message box in bottom right corner
*/
function addNotice(notice) {
$('<div class="notice"></div>')
.append('<div class="skin"></div>')
.append('<a href="#" class="close">close</a>')
.append($('<div class="content"></div>').html($(notice)))
.hide()
.appendTo('#message_box')
.fadeIn(1000)
}
/**
* event handler for closing growl like message box
*/
$('#message_box')
.find('.close')
.live('click', function() {
$(this)
.closest('.notice')
.animate({
border: 'none',
height: 0,
marginBottom: 0,
marginTop: '-6px',
opacity: 0,
paddingBottom: 0,
paddingTop: 0,
queue: false
}, 1000, function() {
$(this).remove();
});
});
/* Give it a whirl */
$(document).ready(function() {
addNotice("<p>Welcome</p>");
});
Я просто изменил функцию addNotice следующим образом, добавив fadeOut с задержкой (я тоже пытался без задержки, та же проблема):
function addNotice(notice) {
$('<div class="notice"></div>')
.append('<div class="skin"></div>')
.append('<a href="#" class="close">close</a>')
.append($('<div class="content"></div>').html($(notice)))
.hide()
.appendTo('#message_box')
.fadeIn(1000)
/* This works but seems to disable the close functionality */
.delay(10000).fadeOut(1000, function(){$(this).remove();});
} .delay(10000).fadeOut(1000, function(){$(this).remove();});
но когда я делаю это, событие close больше не работает;при нажатии на ссылку закрытия окно не закрывается.Он исчезнет по истечении указанного времени, но я хотел бы, чтобы пользователям были доступны обе опции (немедленно закрыться или просто исчезнуть).
Может кто-нибудь сказать мне, что я делаю неправильно?Почему событие закрытия никогда не вызывается / не срабатывает?
Приветствия, Марк.