jQuery addClass 或 css 在特定条件下不工作

jQuery addClass or css not working on specific conditions

我正在尝试为代码跨度元素着色。我尝试了类似问题的各种解决方案,但它们似乎对我不起作用。在下面的代码中,只有 addClass 行不起作用。

代码片段 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");

跨度元素根据某些条件动态生成。而且效果很好。 生成跨度的样本 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' 的 class 应用到仅包含以下 css 代码

的跨度元素
.softList{
    margin-left: 30px;
}

并且两个代码都在同一个按钮点击下触发

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

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

[XXX] 表示属性选择器,因此您需要转义 id 中的左括号和右括号。

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

selectors documentation page之上进行了说明。

问题出在 ID 上。 HTML ID 属性值可以是数字和字符串的组合,如果您尝试使用 software0、software1、software2 作为 ID,代码将起作用。方括号导致了问题

或者你可以使用转义方括号

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