2015-12-01 39 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(由於重複的機會)。現在它像魅力一樣工作!非常感謝。 –