使用jQuery创建HTML元素:正确的方法是什么?

时间:2014-03-16 09:24:31

标签: javascript jquery html backbone.js

最近我做了一个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>的优势是什么?它甚至有所作为吗?

提前致谢。

1 个答案:

答案 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>")是正确的方法,所以尽管其他方式的行为在我的(有限的)测试中有效,但最好这样做。