Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как продлить задержку? (https://javascript.ru/forum/jquery/34279-kak-prodlit-zaderzhku.html)

Shitbox2 27.12.2012 15:05

Как продлить задержку?
 
if (!$('#elem').length) {
    var $elem = $(templateElem).appendTo('#cont').delay(5000).queue(function (next) { $(this).remove(); next(); })
} else {
    var $elem = $('#elem').eq(0).stop(true).delay(5000).queue(function (next) { $(this).remove(); next(); })
}

Создается элемент, который через 5 сек. удаляется. Если приходит команда на создание нового элемента, а старый еще жив, то отчет времени должен начаться заново.

Почти час сижу, переставляю функции и все-равно не работает!

Shitbox2 27.12.2012 23:25

Ладно, другой способ
if (!$('#elem').length) {
    var $elem = $(templateElem).appendTo('#cont').each( function () {
        var el = $(this);
        el.data('reload', function () {              
            clearTimeout(el.data('timer'));
            el.data('timer', setTimeout((function (elem) {
                return function () { elem.remove() }
            })(el), 5000));
            return el
        });
        return this
    }).data('reload')()
} else {
    var $elem = $('#elem').eq(0).data('reload')()
}

Он работает, но можно как-то упростить код?

Deff 27.12.2012 23:33

Shitbox2,
Без необходимого HTML контента, - отклики помогающих минимальны обычно

Shitbox2 27.12.2012 23:43

Тут он совершенно минимальный
<div id="cont"></div>
и
templateElem = '<div id="elem">...</div>'


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