$('<element>')与$('<element />')在jQuery中

我看到人们用两种不同的方式在jQuery中创建HTML元素:

$('<element>')

$('<element />') 

我很好奇哪一个“更正确”。 我认为第一个显而易见的好处在于只需简单地输入。 所有使用哪一个都会有所不同?


没有什么区别,如源代码第30行和第121行所示:

/* Line 30*/
rsingleTag = /^<(w+)s*/?>(?:</1>)?$/,

/* Line 121 */
// If a single string is passed in and it's a single tag
// just do a createElement and skip the rest
ret = rsingleTag.exec( selector );

以下是等同的:

  • <a></a>
  • <a />
  • <a>

  • 技术上$('<element></element>')更准确,因为使用/自我关闭标记在HTML5中被删除,但它绝对没有区别,因为该语句被jQuery解析。 如果有的话,仅仅使用$('<element>')实际上可能会稍微快一点,因为它读的字符少。 哪个应该跳过一些正则表达式条件。

    更好的是,如果你正在寻找使用jQuery的最快方法:

    var temp = new jQuery.fn.init();
    temp[0] = document.createElement('element');
    temp.length = 1;
    

    这个版本是最快的,因为它跳过包装“new jQuery.fn.init()”的jQuery() ,并且不传递任何参数,以便它立即返回一个新的jQuery对象。 它跳过了很多条件和故障安全声明,如果您已经确切知道您正在尝试执行哪些操作,则这些声明是不必要的。

    或稍短一些:

    var temp = $(document.createElement('element'));
    

    这个版本稍微慢一点,但更容易阅读,而且很简单。 它仍然会跳过一大块用于解析的代码,这是一个正在传递的字符串。 相反,jQuery可以自动知道我们在这里使用节点。

    参考
    HTML5不允许“自闭”标签
    Google:html5自我关闭标签
    jsperf


    不,根本没有任何区别,只要元素的定义是正确的。 第二种风格只是一种可以实际保存击键的替代语法:

    $('<a href="herp.derp.com/sherp"/>');    // XML-like syntax
    $('<a href="herp.derp.com/sherp"></a>'); // Well-formed HTML
    $('<a href="herp.derp.com/sherp">');     // Malformed (no closing tag)
    
    链接地址: http://www.djcxy.com/p/83353.html

    上一篇: $('<element>') vs $('<element />') in jQuery

    下一篇: What is the most efficient way to create HTML elements using jQuery?