JQuery. Каждое использование. Очередь? - PullRequest
2 голосов
/ 29 июля 2011

У меня есть этот код в jQuery:

function lshow() {
        var delayt = 500;
        var showtime = 5000;
        var ArrayOfElements = ['.slogan1','.whatwedo','.ekon','.ene', '.ekol', '.sm'];
        var i=0;

        $.each(ArrayOfElements,function (i,element) {
            if($(element).is(':visible')) {
                $(element).delay(delayt).hide('slow');
            }
            if ($(element).is(':hidden')) {
                $(element).delay(showtime).show('slow');
            }

        });
    }

и HTML:

<span class="slogan">
    <span class="slogan1">my slogan</span><!--Default visible-->
        <span class="whatwedo"><!--Default invisible-->
            projects <span class="sm">and modernization </span> of something <span class="ekon">fine</span>
        <span class="ene">fast</span>
        <span class="ekol">smooth</span>
    </span>
</span>

CSS:

.whatwedo, .sm, .ene, .ekol {
   display: none;
}

И я хочу, чтобы он выглядел какчто:

  1. Мой слоган

fadeOut

  1. проекты чего-то прекрасного

«отлично» fadeOut «быстро» fadeIn

  1. проекты чего-то быстрого

то же самое

  1. проекты чего-то простого
  2. проектов и модернизации чего-то

Но через 5 сек.он показывает "проекты и модернизацию чего-то прекрасного быстрого", и я не могу заставить его работать

Ответы [ 4 ]

5 голосов
/ 29 июля 2011

Попробуйте это http://jsfiddle.net/Kt38f/

 $(document).ready(function() {
    var delayt = 500;
    var showtime = 5000;
    var ArrayOfElements = ['.slogan1','.whatwedo','.ekon','.ene', '.ekol', '.sm'];
    var i=0;

            $('.slogan1').fadeOut(delayt, function(){        
                $(".whatwedo").fadeIn(showtime , function(){
                    $('.ekon').fadeOut(showtime , function(){ 
                        $('.ene').fadeIn(showtime, function(){
                            $('.ene').fadeOut(showtime, function(){ 
                                $('.ekol').fadeIn(showtime, function(){ 
                                   $('.sm').fadeIn(showtime);
                                });
                            });   
                        });
                    });
                });
            });         
});
1 голос
/ 29 июля 2011

Я принял немного другой подход к этому.Скрипка @ http://jsfiddle.net/SinS3i/xwc9a/1/

var currentStep = false;
var t = false;
ArrayOfElements = ['.slogan1','.whatwedo','.ekon','.ene', '.ekol', '.sm'];
var delayt = 500;
var showtime = 5000;
lshow = function(elements) {
    var lastStep = currentStep;
    currentStep = elements.shift();
    var hideIt = lastStep ? $(lastStep).has(currentStep).length === 0 : false;
    if(hideIt) {
        $(lastStep).fadeOut(showtime, function() {
            $(currentStep).fadeIn(showtime, function() {
                t = ArrayOfElements.length > 0 ? setTimeout("lshow(ArrayOfElements)", delayt) : false;                    
            });
        });
    } else {
        $(currentStep).fadeIn(showtime, function() {
            t = ArrayOfElements.length > 0 ? setTimeout("lshow(ArrayOfElements)", delayt) : false;
        });
    }
};
$(document).ready(function(){
    t = setTimeout("lshow(ArrayOfElements)", delayt);
});
1 голос
/ 29 июля 2011

Вот еще один способ:

Вместо того, чтобы помещать элементы в массив, вы помещаете функции , которые должны выполняться в массиве, и обрабатываете его, используя setTimeout:

function lshow() {
    var intv = 5000;
    var funcs = [
        function() {
            $('.slogan1').hide('slow');
            $('.whatwedo').show('slow');
        },
        function() {
            $('.ekon').hide('slow');
            $('.ene').show('slow');
        },
        function() {
            $('.ene').hide('slow');
            $('.ekol').show('slow');
        },
        function() {
            $('.sm').show('slow');
        }
    ];
    var i = 0;

    setTimeout(function() {
        var func = funcs[i];
        if(func) {
            i++;
            func();
            setTimeout(arguments.callee, intv);
        }
    }, intv);
}

DEMO

0 голосов
/ 30 июля 2011

Немного отредактировано (http://jsfiddle.net/dVJvc/):

РЕДАКТИРОВАТЬ: Извините, я не видел ваши ответы. (Код тот же, что и в прошлом Шанкаре Санголи)

...