亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

javascript - 關(guān)于jquery的remove()方法
阿神
阿神 2017-07-05 11:06:29
0
1
1236

這里不太明白,不會(huì)重jquery對(duì)象中刪除? 如果要?jiǎng)h除,怎么刪除呢?

阿神
阿神

閉關(guān)修行中......

全部回復(fù)(1)
學(xué)習(xí)ing

關(guān)于 remove 我們看源碼是這樣的:摘自jquery2.x

// keepData is for internal use only--do not document
    remove: function( selector, keepData ) {
        var elem,
            elems = selector ? jQuery.filter( selector, this ) : this,
            i = 0;

        for ( ; (elem = elems[i]) != null; i++ ) {
            if ( !keepData && elem.nodeType === 1 ) {
                jQuery.cleanData( getAll( elem ) );
            }

            if ( elem.parentNode ) {
                if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
                    setGlobalEval( getAll( elem, "script" ) );
                }
                elem.parentNode.removeChild( elem );
            }
        }

        return this;
    },

按照示例的代碼 $('p').remove()結(jié)合源碼所說,其實(shí)用的就是原生的removeChild

https://developer.mozilla.org...

而removeChild 這里MDN有個(gè)說明:

被移除的這個(gè)子節(jié)點(diǎn)仍然存在于內(nèi)存中,只是沒有添加到當(dāng)前文檔的DOM樹中,因此,你還可以把這個(gè)節(jié)點(diǎn)重新添加回文檔中,當(dāng)然,實(shí)現(xiàn)要用另外一個(gè)變量比如上例中的oldChild來保存這個(gè)節(jié)點(diǎn)的引用. 如果使用上述語法中的第二種方法, 即沒有使用 oldChild 來保存對(duì)這個(gè)節(jié)點(diǎn)的引用, 則認(rèn)為被移除的節(jié)點(diǎn)已經(jīng)是無用的, 在短時(shí)間內(nèi)將會(huì)被內(nèi)存管理回收.

而題主標(biāo)注的 不會(huì)從jQuery對(duì)象中刪除,也一樣,題主可以在頁面隨便找一個(gè)jQuery dom看看,
比如

var t = $('#test');
t.remove();

這里t就是一個(gè)jQuery對(duì)象,包含了已經(jīng)remove掉的dom的信息。

正如上面引用mdn所說,如果你沒有用變量來保存已經(jīng)刪除的dom,那它就等著被回收掉了。

當(dāng)然可能覺得就像上面,還是用了t保存了dom的信息,并且在t[0]上,那可以試下 delete(t[0]) ?

= =我倒是 不知道咋測(cè)試那個(gè)dom到底被回收了沒。不過基本上remove了,也沒引用了 ,如果頁面dom不是很復(fù)雜的話,暫時(shí)可以忽略。 這個(gè)是我的見解,有不對(duì)的請(qǐng)指教哈~

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板