2014-02-18 126 views
0

我想在setInvterval裏面改變div的背景圖片,但是不知道怎麼做。下面的代碼:背景圖片不會改變

$('.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)'裏有可能是事端除了你可能期望的。 – putvande

+0

是的,你是對的。那麼如何將參數傳遞給setInterval函數呢? –

+0

那麼最新的代碼發生了什麼? – dreamweiver

回答

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

你也有'''給很多人。 (倒數第二行) – putvande

+0

@putvande:感謝那個兄弟,我沒注意到。 – dreamweiver