将类添加到span元素不起作用

时间:2013-12-31 14:00:52

标签: javascript jquery ajax json

我在ajax成功方法中收到一个包含大量数据的大型JSON对象 但是当我在JSON列表上进行迭代并希望为​​每个元素添加单个类时,事情就无法正常工作。

我在这里粘贴的代码片段是ajax成功方法

$.each(data, function(index,jsonObject){
    console.log(jsonObject.spanId+":"+jsonObject.status)
    if(jsonObject.status != null && jsonObject.status != undefined){
        if(jsonObject.status == "Available"){
        $('#'+jsonObject.spanId).addClass("availableTime");
        }else{
        $('#'+jsonObject.spanId).addClass("vacantTime");
        }
    }
});

我已经尝试了很多但无法完成,请帮助我。

我正在添加我的json对象的块

[
    {
        "spanId": null,
        "status": null
    },
    {
        "spanId": null,
        "status": null
    },
    {
        "spanId": "25_31_15:00",
        "status": "Available"
    },
    {
        "spanId": "25_31_15:30",
        "status": "Available"
    },
    {
        "spanId": "25_31_16:00",
        "status": "Available"
    },
    {
        "spanId": "25_31_16:30",
        "status": "Available"
    },
    {
        "spanId": "25_31_17:00",
        "status": "Available"
    }
]

3 个答案:

答案 0 :(得分:1)

你跨越的ids是not advised,它可能是无效的。

选择器的加号:是伪类的保留字。

Source

答案 1 :(得分:1)

与您的预期相反,在ID中使用冒号是可以的,尽管只有HTML5开始接受以数字开头的ID。为了获得更好的互操作性,建议首先使用字母启动ID,而不是首先使用冒号。

也就是说,如果你必须在标识符中使用冒号,那么当你将它们用作选择器的一部分时,你必须将它们转义:

$('25_31_17\\:00') // this works fine

或者,如果您要按标识符查找元素,则可能还需要考虑:

$(document.getElementById(jsonObject.spanId)) // this will work too

答案 2 :(得分:0)

我还缺少一些东西而 数据 位置错误(看起来很像)

尝试运行:

  $.each(data, function(index){
      console.log(data[index].spanId+":"+data[index].status)

  });

请注意,您需要告诉循环引用哪个数组项:

  data[index]

并且'each'循环遍历数组:

   $.each(data, function(index){ ... 

编辑数据参考:

  var data =  [
   {
    "spanId": null,
    "status": null
   },
   {
    "spanId": null,
    "status": null
   },
   {
    "spanId": "25_31_15:00",
    "status": "Available"
   },
   {
    "spanId": "25_31_15:30",
    "status": "Available"
   },
   {
    "spanId": "25_31_16:00",
    "status": "Available"
   },
   {
    "spanId": "25_31_16:30",
    "status": "Available"
    },
    {
    "spanId": "25_31_17:00",
    "status": "Available"
    }
   ]