2016-01-06 214 views
0

我有2d數組「active [] []」whan我有0s和1s。首先看一下我的html:更改兒童類

<div class="place"> 
<div class="bigbaractive">1</div> 
    <div class="smallbar"><div class="lock2"></div>1.1</div> 
    <div class="smallbar"><div class="lock2"></div>1.2</div> 
    <div class="smallbar"><div class="lock2"></div>1.3</div> 
    <div class="smallbar"><div class="lock2"></div>1.4</div> 
    <div class="smallbar"><div class="lock2"></div>1.5</div> 
    <div class="smallbar"><div class="lock2"></div>1.6</div> 
    <div class="smallbar"><div class="lock2"></div>1.7</div> 
    <div class="smallbar"><div class="lock2"></div>1.8</div> 
    <div class="smallbar"><div class="lock2"></div>1.9</div> 
</div> 

<div class="place"> 
<div class="bigbaractive">2</div> 
     <div class="smallbar"><div class="lock2"></div>2.1</div> 
    <div class="smallbar"><div class="lock2"></div>2.2</div> 
    <div class="smallbar"><div class="lock2"></div>2.3</div> 
    <div class="smallbar"><div class="lock2"></div>2.4</div> 
</div> 

<div class="place"> 
<div class="bigbaractive">3</div> 
    <div class="smallbar"><div class="lock2"></div>3.1</div> 
    <div class="smallbar"><div class="lock2"></div>3.2</div> 
    <div class="smallbar"><div class="lock2"></div>3.3</div> 
    <div class="smallbar"><div class="lock2"></div>3.4</div> 
    <div class="smallbar"><div class="lock2"></div>3.5</div> 
    <div class="smallbar"><div class="lock2"></div>3.6</div> 
    <div class="smallbar"><div class="lock2"></div>3.7</div> 
</div> 

我要的是改變類smallbars的時候是1,在陣列活躍。只要看看:

jQuery(document).ready(function() 
{ 
    var ile; 
    var smallbars = []; 
    for(var i=0; i<10; i++) 
    { 
     smallbars = $('.place')[i].find('.smallbar'); 
     alert(i); 
     for(var j=0; j<smallbars.length; j++) 
     { 
      if(active[i][j] == 1) 
      { 
       smallbars[j].toggleClass("smallbaractive"); 
       smallbars[j].firstChild.remove(); 
      } 
     } 
    } 

}); 

警報(i)不工作後, 「smallbars = $ [I] .find( 'smallbar。 ')(' 的地方。');」但之前工作。在我的JS代碼中看到任何錯誤?請幫忙。我知道我無法描述你想要什麼,只要告訴我你在哪裏看到任何錯誤。 Greatings,我在等待迴應。

+0

有點難以理解你想要什麼。你是通過數組創建html的嗎?在你的例子中,哪個div應該有活動類?所有有「1」的小酒吧?你的二維數組是怎樣的? –

+0

所以我的二維數組填充了「0」和「1」: active [哪個div叫做「place」] [div在這個「place」div裏叫做「smallbar」] = 1或者0;當1(看看if(active [i] [j] == 1))移除這個小欄的第一個孩子,並將這個小欄的類改爲smallbaractive。現在很清楚了嗎? – Artimal

回答

0

一個jQuery對象上使用組合語法將返回在沒有長包裹在jQuery的DOM元素。一個解決方案是使用.eq(index)代替:

$('.place')[i]  // --> DOM element 
$('.place').eq(i) // --> jQuery object with just that element 

然而,看着你的代碼後,我會建議使用.each寫它做對自己循環更容易:

jQuery(document).ready(function() { 
    var ile; 
    var smallbars = []; 
    $('.place').each(function(indexPlace, elPlace) { 
      $(this).find(".smallbar").each(function(indexSmallBar, elSmallBar) { 
      if (active[indexPlace][indexSmallBar] == 1) { 
        $(this).toggleClass("smallbaractive") 
         .find(">:first-child") 
         .remove(); 
      } 
     }) 
    }) 
}); 

Example Fiddle

如果你想讓你的代碼在最小的變化下工作,你可以簡單地在你使用數組訪問器的兩個地方使用.eq

Example Fiddle With Minimal Changes

+0

謝謝。現在它工作完美。 – Artimal

1

我想這是你想要什麼:

$(document).ready(function() { 
    var active = [[1,2],[3,4],[5,6]]; 
    var i = 0; 
    $('.place').each(function(){ 
     var j = 0; 
     $(this).children('.smallbar').each(function(){ 
      if(active[i][j] == 1) { 
       $(this).toggleClass('smallbaractive'); 
       $(this).children(':first').remove(); 
      } 
      j++; 
     }); 
     i++; 
    }); 
}); 
+0

謝謝再見:) – Artimal

+0

你會在這個答案中加入你改變了什麼,或者你用什麼技術來解決OP的問題?未來的讀者可能會發現有用或教育。 – halfer