很疑惑,看到这里一知半解的,点击两个按钮都会新产生两个p,效果没看出有什么不一样啊,有同学阔以讲解一下吗?
首先,看代码,
//给页面上2个p元素都绑定事件
$('p').click(function(e) {
alert(e.target.innerHTML)
})
$("button:first").click(function() {
var p = $("p:first").remove();
p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')
$("body").append(p);
});
$("button:last").click(function() {
var p = $("p:first").detach();
p.css('color','blue').text('p2通过detach处理后,点击该元素事件存在')
$("body").append(p);
});
第一步使用jQuery给p绑定了一个点击事件,在你点击按钮之前先点一下p文本会有弹框出现,
然后你再点击第一个按钮的时候调用了remove()函数, 将第一个p标签删除并转移到下面,再次点击会发现失去了点击效果,
其次再点击第二个按钮,回去调用detach()函数, 将上面剩下的p标签删除并转移到下面,点击时会发现点击事件还在
谢谢,看了石榴姐的说明才明白。
Thank you.
删除之前,点击p1和p2都会弹框,删除之后再添加的p1,点击不会弹框,因为remove会连同它的点击弹框方法都删掉,p2则是用detach删除的,只是在页面不显示,内容方法都是保存的,这样再添加 就还是会弹框
添加id再删除
建议屏蔽这一行再看效果
两种写法,结果都是一样的