Фоновое изображение не изменится

0

Я хочу изменить фоновое изображение div внутри setInvterval, но не могу понять, как это сделать. Здесь код:

$('.thumbnail').on({
        'mouseenter': function(){
            var thumbs = $(this).attr('data-num-thumbs');
            var thumb_url = $(this).css('background-image');
            console.log(thumb_url);
            var i = 1;
            setInterval(function(){
                var new_thumb_url = thumb_url.replace(/\d{1,2}\.jpg/gi, i + '.jpg');
                console.log(new_thumb_url);
                $(this).css('background-image', new_thumb_url);
                i++;
                if(i > 10) i = 1;
            }, 3000);
        });
});

Вот как выглядит div:

<div data-num-thumbs="17" class="thumbnail" style="background: url('http://site/img/11.jpg') no-repeat;"></div>
  • 2
    Возможно, что внутри вашего setInterval $(this) есть что-то другое, чем вы могли ожидать.
  • 0
    Да, ты прав. Итак, как я могу передать аргумент в функцию setInterval?
Показать ещё 2 комментария

1 ответ

1
Лучший ответ

Похоже, что $(this) внутри setInterval() сопоставляет что-то еще, попробуйте это

$('.thumbnail').on({
    'mouseenter': function(){
        $this=$(this);  //store $(this) in a local var
        var thumbs = $(this).attr('data-num-thumbs');
        var thumb_url = $(this).css('background-image');
        console.log(thumb_url);
        var i = 1;
        setInterval(function(){
            var new_thumb_url = thumb_url.replace(/\d{1,2}\.jpg/gi, i + '.jpg');
            console.log(new_thumb_url);
            //$(this).css('background-image', new_thumb_url);
            $this.css('background-image', new_thumb_url);
            i++;
            if(i > 10) i = 1;
        }, 3000);
    }
});

Счастливое кодирование :)

  • 0
    У вас также есть а ) для многих. (от второй до последней строки)
  • 0
    @putvande: спасибо за это, братан, я этого не заметил.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню