我知道在 jQuery 中创建 HTML 元素有很多不同的方法,但我见过有人展示:
$("<div></div>", {attrs...})
或者
$("<div/>", {attrs...})
作为这样做的主要方法。
我发现
$("<div>", {attrs...})
也很好用。
为什么没有人展示第三种方法?它有潜在的问题吗?就它所关注的结果而言,当我检查元素以查看创建的 div 时,它看起来非常相似。
我知道在 jQuery 中创建 HTML 元素有很多不同的方法,但我见过有人展示:
$("<div></div>", {attrs...})
或者
$("<div/>", {attrs...})
作为这样做的主要方法。
我发现
$("<div>", {attrs...})
也很好用。
为什么没有人展示第三种方法?它有潜在的问题吗?就它所关注的结果而言,当我检查元素以查看创建的 div 时,它看起来非常相似。
创建带有类似标签的 html 元素$('<div>')
是$("<div>", {attrs...})
创建 html elmenets 的记录方法,请在此处查看。
当参数有单个标签(带有可选的结束标签或快速结束标签)时——$("<img />")
或$("<img>")
,$( "<a></a>" )
或$("<a>" )
——jQuery 使用原生 JavaScript createElement() 函数创建元素。
让我们看一下 jQuery 源代码:
https://github.com/jquery/jquery/blob/master/src/core.js#L85
// Handle HTML strings
if (typeof selector === "string") {
if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) {
// Assume that strings that start and end with <> are HTML and skip the regex check
match = [null, selector, null];
}
// ...
}
所以字符串必须以 < 开头并以 > 结尾才能被视为 HTML。所有这些变体都是有效的。我认为<div>
最不受欢迎的原因是它提醒人们未关闭的标签是无效的 HTML。然而 jQuery 接受它。
如果你正在这样做$('<div>')
,jQuery 也会使用document.createElement()
.
(只需看看http://code.jquery.com/jquery-1.4.2.js,第 117 行)。
有一些函数调用开销,但除非性能至关重要(您正在创建数百 [数千] 个元素),否则没有太多理由恢复为普通 DOM。
为新网页创建元素可能是您最好坚持使用 jQuery 做事方式的一种情况。
根据 jQuery文档:为确保跨平台兼容性,代码段必须格式正确。可以包含其他元素的标签应与结束标签配对。
$( "<div></div>" );
但是不能包含元素的标签可能会被快速关闭或不被快速关闭,如下所示:
$( "<img />" );
$( "<input>" );
虽然<div>
,</div>
可能在某些浏览器中对您有用,但结果可能会因浏览器而异,甚至跨相同浏览器的不同版本。为了安全起见,始终坚持标准和文档最佳实践。