var p = $("p:first").remove(); 定了个变量表示什么啊
$("p:first"),选取第一个p元素,然后删除它的子元素和自身,最后,把这个赋值给变量p,实际上,remove会把所有的数据全部删除,所以这里的变量p是无意义的,但是改用detach,则是储存被删除的变量,因为detach还是会在内存中的
var p=$("p:first").detach()
remove() 方法不会把匹配的元素从 jQuery 对象中删除,因而可以在将来再使用这些匹配的元素。所以p变量保存的是remove()匹配的p元素以及其内部所有的节点。
$("button:first").click(function() {
var p = $("p:first").remove();
// p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失');
//append之后,元素还在,但是事件没了
$("body").append(p);
});
把第二行注释掉,你发现p删除后又回来了,只不过绑定的事件没了,说明var p这个变量确实存储了p标签的信息,也就是说remove()这个函数是有返回值的,但是返回值和detach()函数不一样,没有后者的完整。另外,我觉得可以把var p换个名字,免得和标签p搞混了,这个变量是可以单独起名字的。
就是这个意思,实际上,因为使用了remove(),p之前的内容和事件被完全删除了,然后,就会显示的是text后面的文本,红色的字体“p1通过remove处理后,点击该元素,事件丢失”
remove会将元素自身移除,同时也会移除元素内部的一切,包括绑定的事件及与该元素相关的jQuery数据.
所以我认为这段代码只是为了表述方便