jQuery对象是通过jQuery包装DOM对象后产生的对象。

jQuery的remove()方法和原生js的removeChild()方法都是从DOM中删除节点,方法的返回值是:

1. remove()方法:返回一个指向已被删除的节点的引用,这个节点元素还可以使用;

2. removeChild()方法:删除的节点仍然存在于内存,只是没有添加到当前文档的DOM树中。

可以总结为:remove()方法移除的是jQuery对象,这个对象又指向DOM节点;removeChild()方法则是直观得移除DOM节点。

两种方法都是把节点从DOM中临时删除,去往待定区!

jQuery对象和DOM对象是紧密相连,共生共存。


为验证这个结论,编制以下验证代码

结论为:每种情况都能恢复移除的元素。


当然,还有一点就是,jQuery的remove()方法移除后再追加,事件绑定不在了;detach()方法移除后再追加,事件绑定还在。

<!DOCTYPE html>
<html>
    <head>
        <meta chardelete=utf-8 />
        <title>从jQuery的remove()和原生JS的removeChild()方法再观jQuery对象和DOM对象的关系</title>
        <script src="http://code.jquery/jquery-1.7.2.min.js"></script>
    </head>
    <style>
    </style>
        <div id='block1'>
            <div id='test1'>jQuery对象设置CSS样式,把节点从DOM移除,最后再把jQuery对象加入文档</div>
            <input type="button" id='delete1' value='delete1'>
            <input type="button" id='back1' value='back1'>
        </div>

       <div id="block2">
            <div id='test2'>jQuery对象设置CSS样式,移除jQuery对象,最后再把jQuery对象加入文档</div>
            <input type="button" id='delete2' value='delete2'>
            <input type="button" id='back2' value='back2'>
       </div>

        <div id="block3">
            <div id='test3'>用原生JS设置CSS样式,再获取jQuery对象,把节点从DOM移除,最后再把jQuery对象加入文档</div>
            <input type="button" id='delete3' value='delete3'>
            <input type="button" id='back3' value='back3'>
        </div>

        <div id="block4">
            <div id='test4'>用原生JS设置CSS样式,再获取jQuery对象,移除jQuery对象,最后再把jQuery对象加入文档</div>
            <input type="button" id='delete4' value='delete4'>
            <input type="button" id='back4' value='back4'>
        </div>

        <div id="block5">
            <div id='test5'>先获取jQuery对象,再用原生JS设置CSS样式,把节点从DOM移除,最后再把jQuery对象加入文档</div>
            <input type="button" id='delete5' value='delete5'>
            <input type="button" id='back5' value='back5'>
        </div>

        <div id="block6">
            <div id='test6'>先获取jQuery对象,再用原生JS设置CSS样式,移除jQuery对象,最后再把jQuery对象加入文档</div>
            <input type="button" id='delete6' value='delete6'>
            <input type="button" id='back6' value='back6'>
        </div>
    <script>
    $ (function () {
        var g = function (id) {
            return document.getElementById(id);
        };
        // jQuery对象设置CSS样式,把节点从DOM移除,最后再把jQuery对象加入文档
        var $test1 = $('#test1');
        $test1.css({'height':'100px','border':'1px solid red'});
        $('#delete1').click(function () {
            g('block1').removeChild(g('test1'));
        });
        $('#back1').click(function () {
            $test1.prependTo('#block1');
        })
        // jQuery对象设置CSS样式,移除jQuery对象,最后再把jQuery对象加入文档
        var $test2 = $('#test2');
        $test2.css({'height':'100px','border':'1px solid red'});
        $('#delete2').click(function () {
            $test2.remove();
        });
        $('#back2').click(function () {
            $test2.prependTo('#block2');
        });
        // 用原生JS设置CSS样式,再获取jQuery对象,把节点从DOM移除,最后再把jQuery对象加入文档
        g('test3').style.height = '100px';
        g('test3').style.border = '1px solid red';
        var $test3 = $('#test3');
        $('#delete3').click(function () {
            g('block3').removeChild(g('test3'));
        });
        $('#back3').click(function () {
            $test3.prependTo('#block3');
        })
        // 用原生JS设置CSS样式,再获取jQuery对象,移除jQuery对象,最后再把jQuery对象加入文档
        g('test4').style.height = '100px';
        g('test4').style.border = '1px solid red';
        var $test4 = $('#test4');
        $('#delete4').click(function () {
            $test4.remove();
        });
        $('#back4').click(function () {
            $test4.prependTo('#block4');
        })
        // 先获取jQuery对象,再用原生JS设置CSS样式,把节点从DOM移除,最后再把jQuery对象加入文档
        var $test5 = $('#test5');
        g('test5').style.height = '100px';
        g('test5').style.border = '1px solid red';
        $('#delete5').click(function () {
            g('block5').removeChild(g('test5'));
        });
        $('#back5').click(function () {
            $test5.prependTo('#block5');
        })
        // 先获取jQuery对象,再用原生JS设置CSS样式,移除jQuery对象,最后再把jQuery对象加入文档
        var $test6 = $('#test6');
        g('test6').style.height = '100px';
        g('test6').style.border = '1px solid red';
        $('#delete6').click(function () {
            $test6.remove();
        });
        $('#back6').click(function () {
            $test6.prependTo('#block6');
        })
    })
    </script>    
</html>



更多推荐

从jQuery的remove()和原生JS的removeChild()方法再观jQuery对象和DOM对象的关系