2016-01-06 165 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