在IF语句中使用jQuery创建元素时输入错误?

时间:2017-04-27 22:06:41

标签: javascript jquery

我根据变量值动态创建具有不同属性的输入元素。如果没有IF语句,以下几行就能完美运行:

$("<input />")
    .attr("id", "input" + i)
    .attr("type", "checkbox")
    .attr("class", "inline checkbox")
    .attr("checked")
    .attr("data-role", "none")
    .appendTo("#input" + i + "container");

但是,当我使用以下内容时,我收到此错误:

  

TypeError:$(...)。attr(...)。attr(...)。attr(...)。attr(...)未定义

var checked = localStorage.getItem(i + "checked");
if (checked === "true") {
    $("<input />")
        .attr("id", "input" + i)
        .attr("type", "checkbox")
        .attr("class", "inline checkbox")
        .attr("checked")
        .attr("data-role", "none")
        .appendTo("#input" + i + "container");
} else {
   $("<input />")
        .attr("id", "input" + i)
        .attr("type", "checkbox")
        .attr("class", "inline checkbox")
        .attr("data-role", "none")
        .appendTo("#input" + i + "container"); 
}

1 个答案:

答案 0 :(得分:3)

因为.attr("checked")返回一个布尔值,所以它会破坏你的链接。你忘了添加它的值部分。

您可以使用对象在一次调用中添加多个属性

$("<input>")
  .attr({
    "id": "input" + i,
    "type": "checkbox",
    "class", "inline checkbox"
  });

使用jQuery 1.6你真的应该使用prop()来设置检查。

$("<input>")
  .attr({})
  .prop("checked", true) //.prop("checked", false)