问答详情
源自:4-5 DOM节点删除之detach()和remove()区别

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

这么写

      $('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元素直接移除没了。

提问者:淡水狗 2017-06-07 16:14

个回答

  • 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元素!


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

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

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