jquery中detach()和remove()區別

JQuery是一個很大強的工具庫,在工作中開發中,可是有些方法還是因爲不常用到,或是沒有注意到而被我們而忽略。

    remove()和detach()可能就是其中的一個,可能remove()我們用得比較多,而detach()就可能會很少了

     通過一張對比表來解釋2個方法之間的不同

方法名

參數

事件及數據是否也被移除

元素自身是否被移除

remove

支持選擇器表達

是(無參數時),有參數時要根據參數所涉及的範圍

detach

參數同remove

情況同remove

remove:移除節點

    - 無參數,移除自身整個節點以及該節點的內部的所有節點,包括節點上事件與數據
    - 有參數,移除篩選出的節點以及該節點的內部的所有節點,包括節點上事件與數據

detach:移除節點

    - 移除的處理與remove一致
    - 與remove()不同的是,所有綁定的事件、附加的數據等都會保留下來
    - 例如:$("p").detach()這一句會移除對象,僅僅是顯示效果沒有了。但是內存中還是存在的。當你append之後,又重新回到了文檔流中。就又顯示出來了。

eq:
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
    <style type="text/css">
        p {
            border: 1px solid red;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
<h3>給頁面2p元素節點綁定點擊事件,點擊後彈出自己本身的節點內容</h3>

<p>元素p1,同時綁定點擊事件</p>

<p>元素p2,同時綁定點擊事件</p>

<h3>通過點擊2個按鈕後觀察方法處理的區別</h3>
<button>點擊通過remove處理元素p1</button>
<button>點擊通過detach處理元素p2</button>
</body>
<script type="text/javascript">
    //給頁面上2p元素都綁定時間 
    $('p').click(function (e) {
        alert(e.target.innerHTML)
    })

    $("button:first").click(function () {
        var p = $("p:first").remove();
        p.css('color', 'red').html('p1通過remove處理後,點擊該元素,事件丟失')
        $("body").append(p);
    });

    $("button:last").click(function () {
        var p = $("p:first").detach();
        p.css('color', 'blue').text('p2通過detach處理後,點擊該元素事件存在')
        $("body").append(p);
    });
</script>
</script>

</
html >
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章