Sag*_*r V 4 javascript jquery dom
QA风格
我最近阅读了一篇文章,它说JavaScript已经实现,append并且prepend方法受到jQuery的启发.
这对我来说是一个新知识,因为据我所知,要附加一个元素,我必须使用element.appendChild并添加一个元素,我必须使用它element.insertBefore(newElement,element.children[0]).
但是jQuery的追加和前置有很多功能,比如接受多个参数.
所以我的问题是
JavaScript的追加前置和jQuery的附加前置之间有什么区别(易用性和性能)
通常,JavaScript比jQuery更快.
jQuery的append和prepend可以在一个jQuery对象上执行,该对象由多个HTML元素组成,但是JavaScript的append和prepend只能执行单个HTML元素.
jQuery的append和prepend可以将HTML元素,htmlString,jQuery对象,纯文本或HTML元素数组作为输入,但JavaScript的append和prepend只能使用HTML元素和字符串(将转换为textNode).
JavaScript实现了追加和前置,但浏览器支持不符合预期.
根据MDN,
浏览器支持是Chrome 54 +,Firefox 49+和Opera 39+.
在Edge上测试它无法正常工作.
JavaScript的
来自MDN
ParentNode.append方法在ParentNode的最后一个子节点之后插入一组Node对象或DOMString对象.DOMString对象作为等效的Text节点插入.
句法
ParentNode.append(val1,val2,val3);
Run Code Online (Sandbox Code Playgroud)
的val可以是一个HTML元素或字符串(将被转换为textNode)
jQuery的
将参数指定的内容插入到匹配元素集中每个元素的末尾.
句法
jQueryCollection.append(val1,valn);
Run Code Online (Sandbox Code Playgroud)
的val可以是HTML字符串或元素或文本或阵列或另一个jQuery对象
jQuery append可以应用于jQuery对象,该对象是HTML元素的集合,但JavaScript append可以应用于单个元素
完成测试以将事物附加到500个div.
document.querySelectorAll('div').forEach(x=> x.append(document.createElement('span')));
Run Code Online (Sandbox Code Playgroud)
6.0ms
$('div').append(document.createElement('span'));
Run Code Online (Sandbox Code Playgroud)
70.0ms
document.querySelectorAll('div').forEach(x=> x.append('Hello'));
Run Code Online (Sandbox Code Playgroud)
4.0ms
$('div').append('Hello');
Run Code Online (Sandbox Code Playgroud)
14.0ms
像往常一样,JavaScript比jQuery更快,但jQuery可以采用更多类型的参数并且易于编写.
JavaScript的
来自MDN
ParentNode.prepend方法在ParentNode的第一个子节点之前插入一组Node对象或DOMString对象.DOMString对象作为等效的Text节点插入.
句法
ParentNode.prepend(val1,val2,val3);
Run Code Online (Sandbox Code Playgroud)
的val可以是一个HTML元素或字符串(将被转换为textNode)或阵列
jQuery的
将参数指定的内容插入匹配元素集中每个元素的开头.
句法
jQueryCollection.prepend(val1,valn);
Run Code Online (Sandbox Code Playgroud)
的val可以是HTML字符串或元素或文本或阵列或另一个jQuery对象
jQuery prepend可以应用于jQuery对象,该对象是HTML元素的集合,但JavaScript prepend可以应用于单个元素
完成测试以将事物前置为500个div.
document.querySelectorAll('div').forEach(x=> x.prepend(document.createElement('span')));
Run Code Online (Sandbox Code Playgroud)
6.0ms
$('div').prepend(document.createElement('span'));
Run Code Online (Sandbox Code Playgroud)
63.0ms
document.querySelectorAll('div').forEach(x=> x.prepend('Hello'));
Run Code Online (Sandbox Code Playgroud)
4.005ms
$('div').prepend('Hello');
Run Code Online (Sandbox Code Playgroud)
17.0ms
同样在这里.JavaScript比jQuery更快,但jQuery可以使用更多类型的参数并且易于编写.
function jsAppend(){
document.querySelectorAll('div').forEach(x=> {x.append(document.createElement('span'))});
}
function jsPrepend(){
document.querySelectorAll('div').forEach(x=> {x.prepend(document.createElement('span'))});
}
function jqAppend(){
$('div').append($('<span></span'));
}
function jqPrepend(){
$('div').prepend($('<span></span'));
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>Run Code Online (Sandbox Code Playgroud)