2014-03-29 96 views
0

嗨我只是想做一個包含類的前面元素的每個循環,但只有第一個元素由於某種原因得到更新,請幫助。可能是一個愚蠢的錯誤,但我無法找到它。只有第一個元素在jquery每個循環得到更新

的jsfiddle:

http://jsfiddle.net/sVTCK/7/

HTML:

<div class="wrapper"> 
    <div class="front"></div> 
    <div class="front"></div> 
    <div class="front"></div> 
    <div class="front"></div> 
    <div class="front"></div> 
    <div class="front"></div> 
</div> 

的jQuery:

function setSlide(rows, dimension) { 
    var topPos = 0; 
    var leftPos = 0; 
    $(".front").each(function(i, e) { 
     topPos++; 
     if (i % rows === 0) { 
      topPos = 0; 
      leftPos++; 
     } 
     var position = topPos * dimension + " " + (leftPos - 1) * dimension; 
     e.style.backgroundPosition = position; 
     e.innerHTML = e.style.backgroundPosition; 
    }); 
} 
setSlide(3,200); 

CSS:

.front{ 
    width:200px; 
    height:200px;  
    background:url(some image); 
    border:1px solid black; 
    float:left 
} 

.wrapper{ 
    overflow:hidden; 
    width:610px;  
} 
+0

你想只添加維度在正方形嗎? – user3401335

+0

這將是最終產品中的圖像 –

回答

5
function setSlide(rows, dimension) { 
    var topPos = 0; 
    var leftPos = 0; 
    $(".front").each(function(i, e) { 
     topPos++; 
     if (i % rows === 0) { 
      topPos = 0; 
      leftPos++; 
     } 
     var position = topPos * dimension + 'px ' + (leftPos - 1) * dimension +'px'; 
     e.style.backgroundPosition = position; 
     e.innerHTML = e.style.backgroundPosition; 
    }); 
} 
setSlide(3,200); 

THE WORKING DEMO.

+4

要解釋,位置(和一般長度)需要單位。除非它們爲零,這就是爲什麼你的第一個元素工作。 –

+0

:O damm如預期愚蠢的錯誤:)感謝您的答案。 –

1

好,我因爲你使用它stlightly refractored的JavaScript到jQuery和從香草JavaScript的感動:

function setSlide(rows, dimension) { 
    var topPos = 0; 
    var leftPos = 0; 
    var front = $('.front'); 
    $.each(front, function(index, val) { 
     topPos++; 
     if (index % rows === 0) { 
      topPos = 0; 
      leftPos++; 
     } 
     var position = topPos * dimension + "px, " + (leftPos - 1) * dimension + 'px'; 
     $(this).css('backgroundPosition', position); 
     $(this).append(position); 
    }); 
} 
setSlide(3,200); 

http://jsfiddle.net/sVTCK/18/

如果你可以告訴我們你想用if語句來做什麼,它將有助於添加背景位置... 如果你在頁面中有它,你應該真的在jQuery上,因爲它會更快,而你也應該緩存你的變量

+0

你錯了。查看檢查元素只有第一個元素正在更新。以上答案是正確的。我忘了「px」 –

+0

閱讀我說的....我提到了if語句和背景位置。對於你來說,只是爲了刷清楚某些人的努力和時間,這也相當有利於你。在尋求幫助時儘量多一點謙虛 – vimes1984

相關問題