为什么 var p =$('p:first').detach(); 不能直接换成$('p:first').detach();

来源:4-5 DOM节点删除之detach()和remove()区别

淡水狗

2017-06-07 16:14

这么写

      $('p').click(function(e){ 

        alert(e.target.innerHTML)

    })

    var p;

    $('button:first').click(function(){

    $('p:first').remove();

    p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失');

    $('body').append(p);    

    }) ;  

结果点击第一次remove按钮的时候,第一个p元素有append回来,第二个p元素直接移除没了。

写回答 关注

2回答

  • qq_寻找_13
    2017-06-07 18:19:36
    已采纳

    var p =$('p:first').detach();这句话是把detach删除的第一个p元素保存起来,要用的时候直接用append(p)是把保存好的删除的p元素在加到body里面

    你直接var p;p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失');是自己新建了一个新的p元素,只有你手动加进去的东西,不是通过remove或者detach删掉的。所以你再append加进去的只是你自己建的p元素!


    淡水狗

    非常感谢!

    2017-07-23 16:43:46

    共 1 条回复 >

  • 慕斯6506489
    2017-07-23 10:20:13

    用控制台运行,发现    p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失');

    是错的,因为这个变量p没有css这个方法,因为p不是jQuery对象

    黑鱼26

    那为什么运行之后效果会出现呢

    2018-07-19 11:23:18

    共 1 条回复 >

jQuery基础(二)—DOM篇

jQuery第二阶段开启DOM修炼,了解创建、插入、删除与替换

114008 学习 · 590 问题

查看课程

相似问题