【问题标题】:jQuery: When creating a new element, do I need the ending tag?jQuery:创建新元素时,是否需要结束标签?
【发布时间】:2011-09-27 04:58:08
【问题描述】:
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'));

【问题讨论】:

标签: jquery append element new-operator end-tag


【解决方案1】:

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

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

应该也是

.appendTo('#header');

而不是

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

【讨论】:

    【解决方案2】:

    你可以这样做

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

    【讨论】:

      【解决方案3】:

      尽管如果您不使用结束标签(或至少自行关闭标签)它可能会起作用,you should add a closing tag (self-close)(如上所述,为了跨平台兼容性):

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

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

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

      $('<a/>');
      

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

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

      这是 jQuery 创建元素的方式:

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


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

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

      【讨论】:

      • 向你的朋友大声喊叫的道具
      • 替代 $('&lt;a/&gt;'); 似乎已从 jQuery docs 中删除。那么可以包含元素的标签不应该快速关闭
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        • 1970-01-01
        • 2023-03-19
        • 2019-12-10
        相关资源
        最近更新 更多