jQuery:创建新元素时,我需要结束标签吗?

发布于 2024-11-18 01:32:27 字数 418 浏览 2 评论 0原文

var $div = $('<div class="error">').appendTo($('#header'));

创建新元素并将其添加到 DOM 时,是否需要结束标签?为什么或为什么不?如果我将内容放入我正在创建的标签中,是否只需要结束标签?像这样:

var $div = $('<div class="error"> Error-Homie! </div>').appendTo($('#header'));

或者我可以创建一个包含内容的元素,但省略结束标签吗?好的?坏的?

var $div = $('<div class="error">').appendTo($('#header'));
var $div = $('<div class="error">').appendTo($('#header'));

When creating new elements and adding them to the DOM, do you need the ending tag? why or why not? Do I only need the ending tag if i'm placing content into the tag i'm creating? like so:

var $div = $('<div class="error"> Error-Homie! </div>').appendTo($('#header'));

or could I create an element with content in it, but leave out the ending tag? Good? Bad?

var $div = $('<div class="error">').appendTo($('#header'));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

熊抱啵儿 2024-11-25 01:32:27

虽然如果您不使用关闭标签(或至少自行关闭标签),它可能会起作用,但是 您应该添加一个结束标签(自关闭)(如上所述,为了跨平台兼容性):

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

$('');

或者,jQuery 允许类似 XML 的标记语法(斜杠之前有或没有空格):

$('');

不能包含元素的标签可能会快速关闭,也可能不会:

$('');
$('<输入>');

这就是方式jQuery 创建元素:

如果 HTML 比没有属性的单个标记更复杂(如上面的示例所示),则元素的实际创建由浏览器的 innerHTML 机制处理。在大多数情况下,jQuery 会创建一个新元素,并将该元素的 innerHTML 属性设置为传入的 HTML 片段。当参数具有单个标记时,例如 $('< ;img />')$(''),jQuery 使用原生 JavaScript createElement() 创建元素代码> 函数。


顺便提一句。您还可以将数据作为第二个参数传递:

$('<div />', {'class': 'error', text: 'Error-Homie!'})

Although it may work if you don't use a closing tag (or at least self close the tag), you should add a closing tag (self-close) (as mentioned, for cross-platform compatibility):

To ensure cross-platform compatibility, the snippet must be well-formed. Tags that can contain other elements should be paired with a closing tag:

$('<a href="http://jquery.com"></a>');

Alternatively, jQuery allows XML-like tag syntax (with or without a space before the slash):

$('<a/>');

Tags that cannot contain elements may be quick-closed or not:

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

This is how jQuery creates the elements:

If the HTML is more complex than a single tag without attributes, as it is in the above example, the actual creation of the elements is handled by the browser's innerHTML mechanism. In most cases, jQuery creates a new element and sets the innerHTML property of the element to the HTML snippet that was passed in. When the parameter has a single tag, such as $('<img />') or $('<a></a>'), jQuery creates the element using the native JavaScript createElement() function.


Btw. you can also pass the data as second parameter:

$('<div />', {'class': 'error', text: 'Error-Homie!'})
深海夜未眠 2024-11-25 01:32:27

您需要结束标签: http://api.jquery.com/appendTo/ 例如

$('<p>Test</p>').appendTo('.inner');

它应该也是

.appendTo('#header');

和不是

.appendTo($('#header'));

you need the ending tag : http://api.jquery.com/appendTo/ for example

$('<p>Test</p>').appendTo('.inner');

it should also be

.appendTo('#header');

and not

.appendTo($('#header'));
-小熊_ 2024-11-25 01:32:27

你也许可以这样做

$('<div/>',{class:'error'}).html('Error-Homie!').appendTo($('#header'));

you can probably do it like this

$('<div/>',{class:'error'}).html('Error-Homie!').appendTo($('#header'));
煞人兵器 2024-11-25 01:32:27

您始终需要结束标记才能拥有正确的 html。

但事实上,大多数浏览器都会忽略此类错误。不过,没有理由偷懒,您不应该依赖浏览器的容忍度来让代码正常工作。这种容忍度是为了能够显示有一些错误的站点,而不是为了警告故意错误的代码。

You always need the ending tag to have proper html.

But it is a fact that the majority of browsers let such mistakes slip. It's no reason to be lazy, though, you should not rely on the browsers' tolerance for your code to work. This tolerance is there to be able to display sites with a few mistakes, not to caution deliberately incorrect code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文