$('<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?