1

我知道在 jQuery 中创建 HTML 元素有很多不同的方法,但我见过有人展示:

$("<div></div>", {attrs...})

或者

$("<div/>", {attrs...})

作为这样做的主要方法。

我发现

$("<div>", {attrs...})

也很好用。

为什么没有人展示第三种方法?它有潜在的问题吗?就它所关注的结果而言,当我检查元素以查看创建的 div 时,它看起来非常相似。

4

4 回答 4

3

创建带有类似标签的 html 元素$('<div>')$("<div>", {attrs...}) 创建 html elmenets 的记录方法,请在此处查看

当参数有单个标签(带有可选的结束标签或快速结束标签)时——$("<img />")$("<img>")$( "<a></a>" )$("<a>" )——jQuery 使用原生 JavaScript createElement() 函数创建元素。

于 2013-01-16T06:37:05.457 回答
2

让我们看一下 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 接受它。

于 2013-01-16T06:38:34.933 回答
1

如果你正在这样做$('<div>'),jQuery 也会使用document.createElement().

(只需看看http://code.jquery.com/jquery-1.4.2.js,第 117 行)。

有一些函数调用开销,但除非性能至关重要(您正在创建数百 [数千] 个元素),否则没有太多理由恢复为普通 DOM。

为新网页创建元素可能是您最好坚持使用 jQuery 做事方式的一种情况。

于 2013-01-16T06:44:13.290 回答
0

根据 jQuery文档:为确保跨平台兼容性,代码段必须格式正确。可以包含其他元素的标签应与结束标签配对。

$( "<div></div>" ); 

但是不能包含元素的标签可能会被快速关闭或不被快速关闭,如下所示:

$( "<img />" );
$( "<input>" );

虽然<div>,</div>可能在某些浏览器中对您有用,但结果可能会因浏览器而异,甚至跨相同浏览器的不同版本。为了安全起见,始终坚持标准和文档最佳实践。

于 2013-01-16T06:43:36.077 回答