Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите исправить (движение по элементам) (https://javascript.ru/forum/jquery/10519-pomogite-ispravit-dvizhenie-po-ehlementam.html)

igsavenko 07.07.2010 23:44

Помогите исправить (движение по элементам)
 
Вот написал такую корявую функцию, которая ДОЛЖНА двигаться по всем элементам по очереди и добавлять к каждому класс при последующем вызове очищать все и добавить этот класс к следующему. Как бы функция это самое и делает, но как сделать задержку... иначе сразу в конец убегает :(

$(document).ready (function () {

        $('#viewscarousel-anounce-roller-block-1 li:first').addClass('clicked');
        $('.top-block-announce-roller-block:first').addClass('checked');
        var a;
        $('#viewscarousel-anounce-roller-block-1 li').each( function() {
            setInterval(function() {
            $('#viewscarousel-anounce-roller-block-1 li').removeClass('clicked');
            /*ВОТ ТУТ НАЧИНАЮТСЯ ПРОБЛЕМЫ THIS НЕ ИЗВЕСТЕН*/
            $(this).toggleClass('clicked');
            if($(this).hasClass('clicked'))
            {
                var id = $(this).attr('jcarouselindex');
                var doc = $('.top-block-announce-roller-block').each(
                    function() {
                        $(this).removeClass('checked');
                        var fid = $(this).attr('identify');
                        if(fid == id)
                        {
                            $(this).addClass('checked');
                        }
                    }
                );
            }
            },4000)
        })
});

Помогите :) а то я не справлюсь без Вашей помощи :)

dyn 08.07.2010 01:25

Попробуйте сохранить ссылку this в переменной до вызова setInterval
var obj = this;

а внутри функции, которая вызывается через setInterval, используйте вместо this переменную obj

igsavenko 08.07.2010 05:21

да делал я так, все ровно он undefined

exec 08.07.2010 07:05

Перед интервалом

window.obj = this;

igsavenko 08.07.2010 07:38

почему-то задержки все равно нет после каждого перемещения по объектам. Задержка срабатывает изначально 4сек, а потом очень быстро оказывается на последнем объекте.
$(document).ready (function () {

        $('#viewscarousel-anounce-roller-block-1 li:first').addClass('clicked');
        $('.top-block-announce-roller-block:first').addClass('checked');
        var a;
        $('#viewscarousel-anounce-roller-block-1 li').each( function() {
            window.obj = this;
            setInterval(function() {
            $('#viewscarousel-anounce-roller-block-1 li').removeClass('clicked');
            $(obj).toggleClass('clicked');
            if($(obj).hasClass('clicked'))
            {
                var id = $(obj).attr('jcarouselindex');
                var doc = $('.top-block-announce-roller-block').each(
                    function() {
                        $(this).removeClass('checked');
                        var fid = $(this).attr('identify');
                        if(fid == id)
                        {
                            $(this).addClass('checked');
                        }
                    }
                );
            }
            },4000)
        })
});

igsavenko 09.07.2010 07:22

Никто не поможет, может быть без each как-то можно сделать?


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