夜阑卧听风吹雨y
2018-07-06 20:12
<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 aa;
$("#bt1").click(function() {
if (!$("p").length) return; //去重
//通过detach方法删除元素
//只是页面不可见,但是这个节点还是保存在内存中
//数据与事件都不会丢失
aa = $("p").detach()
});
$("#bt2").click(function() {
//把p元素在添加到页面中
//事件还是存在
$("body").append(p);
});
</script>
</body>
我划下划线的几个地方改过了,改成这样后,点击button1——删除p,对的。可是点击button2——添加p的时候,变成了添加4个p了。为什么?
之前的p就相当于你现在写的aa,它只是一个变量里面保存了$("p").detach()删除的东西,如果想要加回来那么应该append(aa)
...你这第二个点击移动那个就触发不了,append()中的参数都不对
你确定你这样写的不报错?
<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 aa;
$("#bt1").click(function() {
if (!$("p").length) return;
aa = $("p").detach()
});
$("#bt2").click(function() {
$("body").append(aa);
});
</script>
</body>
这样写没问题
jQuery基础(二)—DOM篇
114014 学习 · 590 问题
相似问题