greenhandc
2017-03-16 15:01
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
<style type="text/css">
p {
color: red;
}
</style>
</head>
<body>
<p>P元素1,默认给绑定一个点击事件</p>
<p>P元素2,默认给绑定一个点击事件</p>
<button id="bt1">点击删除 p 元素</button>
<button id="bt2">点击移动 p 元素</button>
<script type="text/javascript">
$('p').click(function(e) {
alert(e.target.innerHTML)
})
var p;
$("#bt1").click(function() {
if (!$("p").length) return; //去重
//通过detach方法删除元素
//只是页面不可见,但是这个节点还是保存在内存中
//数据与事件都不会丢失
p = $("p").remove();
});
$("#bt2").click(function() {
//把p元素在添加到页面中
//事件还是存在
$("body").append(p);
});
</script>
</body>
</html>这里我把detach改成了remove,怎么还是能够append呢?
p = $("p").remove(); p是一个对象,存储的是两个p节点 【<p>P元素1,默认给绑定一个点击事件</p> <p>P元素2,默认给绑定一个点击事件</p>】,
remove删除了两个p节点及其绑定的事件,把删除的两个p节点存在了变量p里面,
detach删除了两个p节点,但是其绑定的事件还在,一同存在了变量p里面,
bt2 点击事件的时候又把变量p加到body上了
jQuery基础(二)—DOM篇
113996 学习 · 614 问题
相似问题