我根据变量值动态创建具有不同属性的输入元素。如果没有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");
}
答案 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)