Заставить delay () работать с плагином - PullRequest
3 голосов
/ 23 июня 2011

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

Код запуска Desire:

$(".app_advert").delay(10000).set_height(2000);

Код плагина:

       //SetHeight plugin
    (function($){
        $.fn.extend({
            set_height: function(time, callback){
                    scroll = $(window).scrollTop();

                    win_height = $(window).height();
                    document_height = $(document).height();


                    footer_height = $('#footer').height();
                    footer_offset = (document_height-(win_height+scroll));
                    footer_remainder = footer_height-footer_offset;

                return this.each(function(){
                    var x = $(this);

                    if(footer_height-footer_offset<=0){
                        height = 0;
                    } else {
                        height = footer_height-footer_offset;
                    }
                    $(x).stop(true, false).animate({bottom: height}, time, function(){
                        if (callback && typeof callback == 'function') { // make sure the callback is a function
                                callback.call(this); // brings the scope to the callback
                            }

                    });
                });
            }
        });

})(jQuery);

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Вам нужно будет вызвать jQuerys .queue() вручную. Может выглядеть как

$(".app_advert").delay(10000).queue(function() {
    $(this).set_height(2000);
    $(this).dequeue();
});

Вы можете даже связать больше методов в очереди для этой конструкции позади. Остерегайтесь, все fx methods ставятся в очередь по умолчанию для любого другого метода, который вы хотите применить к текущему упакованному набору, вызовите другой .queue().

Прочитайте: http://api.jquery.com/queue

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

как насчет использования setTimeout внутри вашего плагина.Или даже лучше написать свой собственный плагин задержки, используя setTimeout, используя фиктивный метод, чтобы вы могли связывать свои события.

...