使用jquery错误

时间:2018-01-11 06:22:02

标签: javascript jquery css json

这是我的小提琴:DEMO

根据数据JSON,有2个“组”。 每组有2个“小部件”。 每个小部件都有一些“控件”

Light / Brightness / Color控件可用于飞利浦小部件。它们分别与开关/滑块/颜色选择器相关联。

  for (var k = 0; k < data.groups[i].widgets[j].controls.length; k++) {

    $("." + data.groups[i].name + " > .widgets-container > ." + data.groups[i].widgets[j].name + " > .widget-header > .widget-label > .row > .brandName").text(data.groups[i].widgets[j].brandName);

    $("." + data.groups[i].name + " > .widgets-container > ." + data.groups[i].widgets[j].name + " > .widget-header > .widget-label > .row > .productName").text(data.groups[i].widgets[j].productName);

    var controlDiv;
    if (data.groups[i].widgets[j].controls[k].type === "SWITCH") {
      controlDiv = lightControl();
    } else if (data.groups[i].widgets[j].controls[k].type === "SLIDER") {
      controlDiv = brightnessControl();
    } else if (data.groups[i].widgets[j].controls[k].type === "PICKER") {
      controlDiv = colorControl();
    }

    controlDiv = $(controlDiv).addClass(data.groups[i].widgets[j].controls[k].name);

    $("." + data.groups[i].widgets[j].controls[k].name > ".control-name").text(data.groups[i].widgets[j].controls[k].name);

    $("." + data.groups[i].name + " > .widgets-container").append(widgetDiv);
    $(widgetDiv).append(controlDiv);
    $(".container-box").append(groupDiv);
  }

但是,不会根据JSON的要求附加元素。此外,不会出现光/亮度/颜色控制的标签。我哪里错了?

非常感谢任何帮助。 谢谢。enter image description here

1 个答案:

答案 0 :(得分:1)

这是答案小提琴:AnswerFiddle

我通过首先创建DOM元素,然后为DOM元素分配/附加值来修复此问题。

之前有一个问题,因为有时甚至在创建DOM元素之前就会尝试分配值。

    controlDiv = $(controlDiv).addClass("row " + (data.groups[i].widgets[j].controls[k].name).replace(/\s+/g, '-').toLowerCase()).prepend("<div class='col s7 controlName'>" + data.groups[i].widgets[j].controls[k].name + "</div>");

    if (data.groups[i].widgets[j].controls[k].type === 'SWITCH') {
      $(controlDiv).append('<div class="col s5 switch"><label>OFF<input type= "checkbox"><span class="lever"></span>ON</label></div>')
    } else if (data.groups[i].widgets[j].controls[k].type === 'SLIDER') {
      $(controlDiv).append('<div class="col s5 center-align"><img src="images/brightness.png"></div><p class="col s7 range-field"><input type="range" min = "0" max = "100"/></p><div class="col s5 brightness-percentage center-align">60%</div>')
    } else if (data.groups[i].widgets[j].controls[k].type === 'PICKER') {
      $(controlDiv).append('<input class="col s2" type="color" name="favcolor" value="#ff0000"><div class="col s3 colorHexValue center-align">#ff0000</div>')

    } else if (data.groups[i].widgets[j].controls[k].type === 'GRAPH') {
      $(controlDiv).html("<img src='images/graph.png'>");
    } else if (data.groups[i].widgets[j].controls[k].type === 'DETECTOR') {
      $(controlDiv).html("<img src='images/motion.png'>")
    }


    widgetDiv.append(controlDiv);
    groupDiv.append(widgetDiv);
    $(".container-box").append(groupDiv);