Открыть меню    

Цикл через список на jQuery

При помощи нижеприведенного небольшого фрагмента кода мы пробегаем через все элементы списка (li) неупорядоченного списка (ul) с идентификатором cyclelist. Вы можете использовать любой элемент с 'детьми'. Просто замените ul#cyclelist li на те элементы, которые вам надо 'прогнать' в цикле. Что делает наш цикл: поочередно показывает содержимое элементов списка.

javascript

$(document).ready(function() {

     var j = 0;
     var delay = 2000; //millisecond delay between cycles
     function cycleThru(){
             var jmax = $("ul#cyclelist li").length -1;
             $("ul#cyclelist li:eq(" + j + ")")
                     .animate({"opacity" : "1"} ,400)
                     .animate({"opacity" : "1"}, delay)
                     .animate({"opacity" : "0"}, 400, function(){
                             (j == jmax) ? j=0 : j++;
                             cycleThru();
                     });
             };

     cycleThru();

 });

CSS

ul#cyclelist {width:200px;border:solid;position:relative;overflow:hidden;height:200px}
ul#cyclelist li {font-size:1.4em;padding:20px;opacity:0;position:absolute}
индекс текущего элемента в наборе 1 индекс текущего элемента в наборе 2 индекс текущего элемента в наборе 3 индекс текущего элемента в наборе 4 индекс текущего элемента в наборе 5 индекс текущего элемента в наборе 6 индекс текущего элемента в наборе 7 индекс текущего элемента в наборе 8 индекс текущего элемента в наборе 9

Данный код также преобразован в плагин.

Код плагина:

jQuery

(function($) {

    $.cycleThru = {
        defaults: {
            delay: 3000,

        }
    }
    $.fn.extend({
        cycleThru:function(config) {
            var config = $.extend({}, $.cycleThru.defaults, config);
            return this.each(function() {
                var delay = config.delay;
                var ulid = $(this).attr("id");
                var j = 0;
                var jmax = $(this).children("li").length -1;

                function cyclee(){
                    $("ul#" + ulid + " li:eq(" + j + ")")
                        .animate({"opacity" : "1"} ,400)
                        .animate({"opacity" : "1"}, delay)
                        .animate({"opacity" : "0"}, 400, function(){
                            (j == jmax) ? j=0 : j++;
                            cyclee();
                    });
                };
                cyclee();
            })
        }
    })
})(jQuery);

Комментарии к статье

Добавить комментарий к сниппету