2015-12-01 37 views
1

我正在尝试颜色代码跨度元素。我尝试过类似问题的各种解决方案,但他们似乎不适合我。在下面的代码中,只有addClass行不起作用。jQuery addClass或css在特定条件下不起作用

代码片段1

for (var m=0;m<software.length;m++) 
{ 
    alert('software['+m+'] :'+software[m].priority); 
    if(software[m].priority>=2) 
    { 
     alert('software['+m+'] :'+software[m].priority); 
     alert("$('#software["+m+"]').addClass('redClr');"); 
     $('#software['+m+']').addClass('redClr'); 
     } 
    software[m].priority=0; 
    alert('software['+m+'] :'+software[m].priority); 
}; 

我试过的CSS方法来代替,并且也不能正常工作。

$('#software['+m+']').css("color","red"); 

span元素根据某些条件动态生成。它生成良好。用于产生跨度样品ID:软件[0]

样品: 代码片段2

if (checkedValues[j]==allValues[0]) { 
    $("#softwareLeft").append("<span class='boldText'>"+allValues[0]+" :</span><br>"); 
    for(var k=0;k<software.length;k++) { 
     if(software[k].calculation==1){ 
      //alert(software[k].name); 
      if(software[k].combo!=1){ 
      $("#softwareLeft").append("<span class='softList' id='software["+k+"]'>"+software[k].name+"(Rs: "+software[k].prize+")</span><br>"); 
      }; 
      if(software[k].combo==1 && software[k].priority==0){ 
       $("#softwareRight").append("<span class='softList'>"+software[k].name+"(Rs: "+software[k].prize+")</span><br>"); 
      }; 
      software[k].priority++; 
     }; 
    }; 

而且已经是一个类用于命名为“softList”跨越仅包含以下CSS代码元素

.softList{ 
    margin-left: 30px; 
} 

而且两者的代码下相同的按钮触发点击喜欢

$("#nextBtn").click(function() { 
    //Code fragment 2 
    //Code fragment 1 
}); 

正如我所说,我已经很好地研究了这个问题,发现了许多相似但有些不同的问题。这个严格遵守特定的条件,因此单独发布。

+3

中的jsfiddle将使用链接很容易调试 –

+0

https://jsfiddle.net/kgh30ff4/1/但不因为不知道如何在其中包含大型弹出式CSS和js文件。除了这个bug之外,代码在我的本地系统上完美运行。 –

回答

2

问题出在id。如果您使用software0,software1,software2作为代码工作的ID,则HTML ID属性值可以是数字和字符串的组合。方括号导致该问题

,或者你可以逃脱方括号

$('#software\\['+m+'\\]') 
+0

明白了。更改为软件-1,软件-2等,并选择$('#software - '+ m)。问题解决了。 –

2

[XXX]意味着一个属性选择器,所以你需要转义ID中的开头和结尾括号。

$('#software\\['+m+'\\]') 

它在selectors documentation page的顶部解释。

+0

谢谢,格式从'software [0]'改为'software-0',并将id切换到class(由于重复的机会)。现在它像魅力一样工作!非常感谢。 –