最近我做了一个Backbone tutorial over on Tuts+,我看到了用jQuery创建HTML元素的一种非常奇怪的方式,作者说要像这样创建它:
var select = $('</select>', {
html: '<option value="all">All</option>'
});
但我认为这肯定是不正确的所以我只是将select
元素更改为没有正斜杠:
var select = $('<select>', {
html: '<option value="all">All</option>'
});
所以在我完成教程之后,我看了一下评论,一位评论者说应该这样写:
var select = $('<select/>', {
html: '<option value="all">All</option>'
});
这也很好但我很困惑:这三者有什么区别?我确定第一个(</select>
)不起作用,但使用<select/>
优于<select>
的优势是什么?它甚至有所作为吗?
提前致谢。
答案 0 :(得分:1)
列表中的第一个不起作用,其他两个都工作相同。
就我个人而言,我更喜欢使用<select>
,因为对我来说,这是最具可读性的。如果你喜欢把斜杠放进去,那就去吧 - 它会工作得很好,这只是一个可读性问题。
如果您愿意,也可以使用$("<select></select>")
,虽然对我来说再次变得更加混乱。
另外,对于添加选项,最好像添加选项一样添加选项,而不是将原始html编码为字符串,例如:
var options = [];
for (var i = Options.length - 1; i >= 0; i--) {
options.push($("<option>", {
html: Options[i].Title,
value: Options[i].Value
}));
}
var select = $("<select>", {
html: options,
id: "OptionSelector"
});
正如大卫在下面指出的那样,根据文档,$("<select>")
是正确的方法,所以尽管其他方式的行为在我的(有限的)测试中有效,但最好这样做。