1. 程式人生 > >ES5--節點屬性改變觸發事件

ES5--節點屬性改變觸發事件

DOM變動事件的用法


  DOM2級的変動事件是為XML或html的DOM設計的,不特定於某種語言。 
一:變動事件的分類有7種,最常用的瀏覽器支援最多的有3種,下面黑體? 
1. DOMSubtreeModified:在DOM結構中發生任何變化時觸發; 
2. DOMNodeInserted:在一個節點作為子節點被插入到另一個節點中時觸發; 
3. DOMNodeRemoved:在節點從其父節點中被移除時觸發; 
4. DOMNodeInsertedIntoDocument:在一個節點被直接插入文件中或者通過子樹間接插入文件後觸發。在DOMNodeInserted之後觸發; 
5. DOMNodeRemovedFromDocument:在一個節點被直接從文件中刪除或通過子樹間接從文件中移除之前觸發。在DOMNodeRemoved之後觸發。 
6. DOMAttrModified:在特性被修改之後觸發; 
7. DOMCharacterDataModified:在文字節點的值發生變化的時候觸發。 
二:刪除節點檢測?


首先觸發的是DOMNodeRemoved事件,它對應的event物件中的target屬性值是被刪除的節點,relatedNode屬性值是被刪除節點的父節點,該事件會冒泡;
其次出發的是DOMNodeRemovedFromDocument事件,它對應的event物件中的target屬性值為指定的被刪除的子節點。只有繫結到它的子節點上才能被觸發。
最後觸發的是DOMSubtreeModified事件。這個事件對應event物件中的target屬性是被移除節點的父節點。 
(下面註釋的序號為觸發的順序:)
    function getFirstChild(obj){   // 獲取第一子節點(找到第一個不為空的節點)
        var first = obj.firstChild;
        while(first.nodeType != 1){
            first = first.nextSibling;
        }
        return first;
    }
    EventUtil.addHandler(window,"load",function(event){
        var list = document.getElementById('myList');
        var btn = document.getElementById("mbtn");


        EventUtil.addHandler(document,"DOMNodeRemoved",function(event){
            console.log(event.type);        //1:DOMNodeRemoved
            console.log(event.target);      //2:ul節點,即被刪除的節點
            console.log(event.relatedNode); //3:body節點,即被刪除節點的父節點
        })
        EventUtil.addHandler(getFirstChild(list),"DOMNodeRemovedFromDocument",function(event){
            console.log(event.type)         //4:DOMNodeRemovedFromDocument
            console.log(event.target)       //5:li節點,即<li>item1</li>
        });
        EventUtil.addHandler(document,"DOMSubtreeModified",function(event){
            console.log(event.type);        //6:DOMSubtreeModified
            console.log(event.target);      //7:body節點,即被刪除節點的父節點
        })
        EventUtil.addHandler(btn,'click',function(event){
            list.parentNode.removeChild(list);  //
        })
    })
三:插入節點檢測? 
  在使用appendChild()、replaceChild()或insertBefore()向DOM中插入節點的時候:


首先觸發DOMInserted事件,它對應的event物件中的target屬性為新增的節點,relateNode屬性對應被新增節點的父節點。(可冒泡);
其次觸發的是DOMNodeInsertedIntoDocument事件,它對應的event物件中的target屬性是新增的節點,只有指定給一個子節點的事件處理程式才會被呼叫
最後出發的是DOMSubtreeModified事件,它對應的event物件長得target屬性值是新節點的父節點。 
程式碼如下所示:
    function getFirstChild(obj){   // 獲取第一子節點(找到第一個不為空的節點)
        var first = obj.firstChild;
        while(first.nodeType != 1){
            first = first.nextSibling;
        }
        return first;
    }
    EventUtil.addHandler(window,"load",function(event){
        var list = document.getElementById('myList');
        var btn = document.getElementById("mbtn");
        var item4 = document.createElement('li');
        var item4Text = document.createTextNode('item4');


        EventUtil.addHandler(document,"DOMNodeInserted",function(event){
            console.log(event.type);        //1:DOMNodeInserted
            console.log(event.target);      //2:li節點,即被新增的節點
            console.log(event.relatedNode); //3:ul節點,即被新增節點的父節點
        });
        EventUtil.addHandler(item4,"DOMNodeInsertedIntoDocument",function(event){
            console.log(event.type);        //4:DOMNodeInsertedIntoDocument
            console.log(event.target);      //5:li節點,即被新增的節點<li>item4</li>
        });
        EventUtil.addHandler(document,"DOMSubtreeModified",function(event){
            console.log(event.type);        //6:DOMSubtreeModified
            console.log(event.target);      //7:ul節點,即被觸發節點的父節點
        })
        EventUtil.addHandler(btn,'click',function(){
            item4.appendChild(item4Text);     getFirstChild


            list.replaceChild(item4,getFirstChild(list));
        });
    })

相關推薦

ES5--節點屬性改變觸發事件

DOM變動事件的用法  DOM2級的変動事件是為XML或html的DOM設計的,不特定於某種語言。 一:變動事件的分類有7種,最常用的瀏覽器支援最多的有3種,下面黑體? 1. DOMSubtreeModified:在DOM結構中發生任何變化時觸發; 2. DOMNodeIns

通過c# 實現自定義屬性改變觸發自定義事件 ,理解自定義事件及其觸發過程

以下說明可解釋自定義的事件的自定義觸發過程: 直接上程式碼,內含說明(介面是兩個文字框textbox1,textbox2,和一個button1,介面的Load事件,button的click事件) Form1 類(呼叫者端) using System; using

silverlight屬性改變事件通知

void property att lap str ring nbsp callback ebo 工作中遇到silverlight本身沒有提供的某些屬性改變事件,但又需要在屬性改變時得到通知,Google搬運stack overflow,原地址 /// Listen

Ztree自動觸發第一個節點的點擊事件

show clas false scrip ztree init pre set ces 1.代碼 $(function () { var setting = { //check屬性放在data屬性之後,復選框不起作用

input 內容發生改變觸發事件

鼠標事件 改變 發的 條件 change 不同 必須 blog hang oninput,onpropertychange,onchange的用法 onchange觸發事件必須滿足兩個條件: a)當前對象屬性改變,並且是由鍵盤或鼠標事件激發的(腳本觸發無效) b)當前

監聽元素屬性改變事件的方法

process text aaaaa 賦值 obj src mark `` html5 一、onchange事件只在鍵盤或者鼠標操作改變對象屬性,且失去焦點時觸發,腳本觸發無效。(就是說你在輸入框中輸入完內容,輸入完了,然後鼠標點別的地方觸發該事件)二、oninput事件o

關於Input內容改變觸發事件

move select htm lac alt 其他瀏覽器 cin containe fun 1、onchange onchange 事件會在域的內容改變時觸發。支持的標簽<input type="text">, <textarea>, <s

Input值改變觸發事件

//當值馬上改變時觸發,鍵盤按下時觸發 $('input[name="price_min"]').on('input propertychange', function() { alert(2) }) //nput失去焦點後 如果值發生改變後,觸發 $('input[name="price

input 內容改變觸發事件

input 內容改變的觸發事件 1. onchange   onchange 事件會在域的內容改變時觸發。支援的標籤<input type="text">, <textarea>, <select>,<keygen>。 注意:

QT的QTreeWidget節點觸發事件(一)

宣告:網路上給出的這方面的資料較少,且都針對的是第一級節點的觸發繫結事件,但是當遇到有不止一級父節點的子節點後,相關內容較少,因此通過實踐整理出了以下方法,進行QTreeWidget節點觸發事件的繫結,方法十分麻煩,也十分初級,希望對初學者能有所幫助。 在UI介面中拖入一個QTreeW

input標籤內容改變觸發事件

1. onchange事件與onpropertychange事件的區別:   onchange事件在內容改變(兩次內容有可能相等)且失去焦點時觸發;onpropertychange事件是實時觸發,每增加或刪除一個字元就會觸發,通過js改變也會觸發該事件,但是該事件是IE專有。 2. oninput事件與o

獲取自定義屬性/event的觸發事件物件和繫結事件物件

1.獲取自定義屬性 var testEle = document.getElementById("test")   testEle.setAttribute("key","value"); // 設定   testEle.attributes["k

回車鍵觸發事件的js程式碼、input輸入框值改變事件、js陣列

1、回車鍵觸發事件的js程式碼       在文字框中輸入完內容後,經常需要按回車,焦點跳到下個文字框,或者觸發按鈕事件 判斷是否按下的為回車非常簡單: function EnterPress(){ if(event.keyCode == 13){ ...

input標籤內容改變或失去焦點的觸發事件

                        onch

Gridview中CheckBox列:賦值、改變觸發事件

前臺、模板列 <asp:TemplateField HeaderText="" SortExpression="id" Visible="False">、 <ItemTemplate> <asp:Labe

[HTML5] radio改變觸發change事件

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style

jQuery中動態建立元素節點無法觸發事件

通過jquery動態生成了一個按鈕 $(this).html('<a id="register" href="javascript:;">註冊</a>').addClass("

WEB前端animation和滑鼠hover事件屬性改變問題。

關於在animation動畫中改變的元素的屬性值,如果滑鼠的hover事件也改變了同一個屬性值,那麼該屬性是否會改變? 前端菜鳥,學習過程中的實踐如下: <!doctype html> <html> <head> <meta ch

input圓形多選按鈕狀態改變(checked)與點選觸發事件的優先順序

在1.5之後 click事件先於屬性改變觸發,因為其在執行 click() 方法的時候實際上是走了 trigger ,jquery先走了內部事件系統找到了回撥函式執行,再執行的瀏覽器原生的 click()方法來觸發checkbox屬性變化。(原來如此)

JavaScript基礎 鼠標放上觸發事件onmouseover 鼠標移開觸發事件onmouseout

type 感悟 doc 博客 use div true 用途 class 鎮場詩:    清心感悟智慧語,不著世間名與利。學水處下納百川,舍盡貢高我慢意。    學有小成返哺根,願鑄一良心博客。誠心於此寫經驗,願見文者得啟發。———————————————————————