第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評(píng)論
占位
占位

移除

涉及節(jié)點(diǎn)刪除的接口jQuery劃分了四個(gè)分別是detach,empty,remove,unwrap,因?yàn)槭褂玫姆秶煌?/span>所以功能有所差異,但是總的來說都是用來清理節(jié)點(diǎn)的。

innerText是我們常用的文本清理方法,但是火狐下不兼容,不過會(huì)提供一個(gè)類似的方法叫textContent。

兩者還是有一些區(qū)別的,總結(jié)如下。

IE中的innerText是需要對(duì)innerHTML的值進(jìn)行:

  1.  HTML轉(zhuǎn)義(等同于XML轉(zhuǎn)義,對(duì)<、&等轉(zhuǎn)義字符進(jìn)行處理);
  2.  經(jīng)過HTML解釋和CSS樣式解釋;
  3.  之后又剔除格式信息;
  4.  之后留下的純文本。

而FF中的textContent沒有2、3步,在經(jīng)過了HTML轉(zhuǎn)義之后直接剔除所有html標(biāo)簽后得到的純文本,我們在接著看下就jQuery對(duì)節(jié)點(diǎn)清除的具體封裝。

.empty()

從DOM中移除集合中匹配元素的所有子節(jié)點(diǎn),為了避免內(nèi)存泄漏,jQuery先移除子元素的數(shù)據(jù)和事件處理函數(shù),然后移除子元素。

empty: function() {
    var elem,
        i = 0;
    for (;
        (elem = this[i]) != null; i++) {
        if (elem.nodeType === 1) {
            jQuery.cleanData(getAll(elem, false));
            elem.textContent = "";
        }
    }
    return this;
}

jQuery是合集元素,所以我們遍歷下this[i],然后直接把元素的textContent清空即可,但是需要注意jQuery.cleanData方法,清除節(jié)點(diǎn)不單單只有元素,還有附加在上面的事件處理與數(shù)據(jù)緩存。

jQuery.cleanData方法,就是通過元素判斷上綁定的expando的這個(gè)uuid在與之對(duì)應(yīng)的cache中找到數(shù)據(jù)與事件句柄加以刪除。

.remove()

.remove() 將元素移出DOM,當(dāng)我們想將元素自身移除時(shí)我們用 .remove(),同時(shí)也會(huì)移除元素內(nèi)部的一切,包括綁定的事件及與該元素相關(guān)的jQuery數(shù)據(jù)。

remove: function(selector, keepData /* Internal Use Only */ ) {
    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;
}

remove是empty的加強(qiáng)版,把本身的父節(jié)點(diǎn)也清除掉了。因?yàn)閞emove支持過濾器所以支持傳遞selecor。remove需要?jiǎng)h除自身及其所有的子元素包括事件與數(shù)據(jù),所以要通過找到父節(jié)點(diǎn)parnetNode移除。

.detach()

如果你想刪除元素,不破壞他們的數(shù)據(jù)或事件處理程序(這些綁定的信息還可以在之后被重新添加回來)。.detach() 方法和.remove()一樣, 除了 .detach()保存所有jQuery數(shù)據(jù)和被移走的元素相關(guān)聯(lián)。當(dāng)需要移走一個(gè)元素,不久又將該元素插入DOM時(shí),這種方法很有用。

detach: function(selector) {
      return this.remove(selector, true);
 }

這個(gè)方法也很簡單,意味著這要暫時(shí)移除節(jié)點(diǎn),但是不銷毀對(duì)應(yīng)的事件與數(shù)據(jù),在remove方法中支持傳遞布爾值用來處理這個(gè)cleanData的過濾。

任務(wù)

?不會(huì)了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請(qǐng)驗(yàn)證,完成請(qǐng)求

由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求

加群二維碼

打開微信掃碼自動(dòng)綁定

您還未綁定服務(wù)號(hào)

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號(hào)支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請(qǐng)您關(guān)注公眾號(hào)
關(guān)注后,及時(shí)獲悉本課程動(dòng)態(tài)

舉報(bào)

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費(fèi)2個(gè)積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費(fèi)2個(gè)積分

繼續(xù)發(fā)表請(qǐng)點(diǎn)擊 "確定"

為什么扣積分?