这三种jQuery
方法之间的功能差异是什么:
答案 0 :(得分:146)
hide()
将匹配元素的CSS display
属性设置为none
。
remove()
完全从DOM中删除匹配的元素。
detach()
与remove()
类似,但保留与匹配元素关联的存储数据和事件。
要将分离的元素重新插入DOM,只需从jQuery
插入返回的detach()
集:
var span = $('span').detach();
...
span.appendTo('body');
答案 1 :(得分:40)
想象一张桌子上的一张纸,上面写着用铅笔写的一些笔记。
hide
- >扔上衣服empty
- >用橡皮擦删除笔记detach
- >抓住手中的纸张并将其保留在那里,以便将来的计划remove
- >抓住纸张扔到垃圾箱纸张代表元素,而笔记代表元素的内容(子节点)。
有点简化但不完全准确,但易于理解。
答案 2 :(得分:12)
hide()
将匹配元素的显示设置为无。
detach()
删除匹配的元素,包括所有文本和子节点。
此方法存储与元素关联的所有数据,因此可用于恢复元素的数据以及事件处理程序。
remove()
还会删除匹配的元素,包括所有文本和子节点。
但是,在这种情况下,只能恢复元素的数据,而不能恢复其事件处理程序。
答案 3 :(得分:11)
在jQuery中,有三种方法可以从DOM中删除元素。这三种方法是.empty()
,.remove()
和.detach()
。所有这些方法都用于从DOM中删除元素,但它们都是不同的。
<强> .hide()强>
隐藏匹配的元素。如果没有参数,.hide()方法是隐藏HTML元素的最简单方法:
$(".box").hide();
<强> .empty()强>
.empty()方法从所选元素中删除所有子节点和内容。此方法不会删除元素本身或其属性。
注意强>
.empty()方法不接受任何参数以避免内存泄漏。在删除元素本身之前,jQuery会从子元素中删除其他构造,例如数据和事件处理程序。
示例
<div class="content">
<div class="hai">Hai</div>
<div class="goodevening">good evening</div>
</div>
<script>
$("div.hai").empty();
</script>
这将导致删除Hai文本的DOM结构:
<div class="content">
<div class="hai"></div>
<div class="goodevening">good evening</div>
</div>
如果<div class="hai">
中有任意数量的嵌套元素,它们也会被删除。
.remove()
.remove()方法删除所选元素,包括所有文本和子节点。此方法还会删除所选元素的数据和事件。
注意强>
如果要删除元素本身及其中的所有内容,请使用.remove()。除此之外,还删除了与元素关联的所有绑定事件和jQuery数据。
示例强>
考虑以下html:
<div class="content">
<div class="hai">Hai</div>
<div class="goodevening">good evening</div>
</div>
<script>
$("div.hai").remove();
</script>
这将导致删除<div>
元素的DOM结构:
<div class="content">
<div class="goodevening">good evening</div>
</div
如果我们在<div class="hai">
中有任意数量的嵌套元素,它们也会被删除。其他jQuery构造(例如数据或事件处理程序)也会被删除。
<强> .detach()强>
.detach()方法删除所选元素,包括所有文本和子节点。但是,它会保留数据和事件。此方法还保留已删除元素的副本,以便稍后重新插入。
注意强>
当删除的元素稍后要重新插入DOM时,.detach()方法很有用。
示例强>
<!doctype html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hai!</p>Good <p>Afternoo</p>
<button>Attach/detach paragraphs</button>
<script>
$( "p" ).click(function() {
$( this ).toggleClass( "off" );
});
var p;
$( "button" ).click(function() {
if ( p ) {
p.appendTo( "body" );
p = null;
} else {
p = $( "p" ).detach();
}
});
</script>
</body>
</html>
有关详细信息,请访问:http://www.scriptcafe.in/2014/03/what-is-difference-between-jquery_15.html
答案 4 :(得分:0)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
var $span;
$span = $("<span>");
$span.text("Ngoc Xuan");
function addEvent() {
$span.on("click",function(){
alert("I'm Span");
});
}
function addSpan() {
$span.appendTo("body");
}
function addButton(name) {
var $btn = $("<input>");
$btn.attr({value:name,
type:'submit'});
if(name=="remove"){
$btn.on("click",function(){
$("body").find("span").remove();
})
}else if(name=="detach"){
$btn.on("click",function(){
$("body").find("span").detach();
})
}else if(name=="Add") {
$btn.on("click",function(){
addSpan();
})
}else if(name=="Event"){
$btn.on("click",function(){
addEvent();
})
}else if (name == "Hide") {
$btn.on("click",function(){
if($span.text()!= '')
$span.hide();
})
}else {
$btn.on("click",function(){
$span.show();
})
}
$btn.appendTo("body");
}
(function () {
addButton("remove");
addButton("detach");
addButton("Add");
addButton("Event");
addButton("Hide");
addButton("Show");
})();
});
</script>
</body>
</html>