午夜勾魂曲-午夜福利自怕-午夜福利在线观看6080-午夜福利院电影-国产精品毛片AV久久97-国产精品麻豆高潮刺激A片

[EX]事件捕獲,事件冒泡,事件委托

2018-4-17    seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

1事件流

JavaScript與HTML之間的交互是通過事件實現的。事件,就是文檔或瀏覽器窗口中發生的一些特定的交互瞬間。可以使用偵聽器來預訂事件,以便事件發生時執行相應的代碼。 
 
事件流的起源:就是在瀏覽器發展到第四代的時候,瀏覽器開發團隊遇到一個問題:頁面的哪一部分會擁有某個特定的事件?要明白這個問題問的是什么,可以想象畫在一張紙上的一組同心圓。如果你把手指放在圓心上,那么你的手指指向的不是一個圓,而是紙上的所有圓。也就是說如果單擊了頁面的某個按鈕,同時也單擊了按鈕的容器元素,甚至單擊了整個頁面。不過呢,IE提出的是冒泡流,而網景提出的是捕獲流。

示例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件流</title> <style type="text/css"> #content{width: 150px;height: 150px;background-color: red;} #btn{width: 80px;height: 80px;background-color: green;} </style> </head> <body> <div id="content">content <div id="btn">button</div> </div> <script type="text/javascript"> var content = document.getElementById("content"); var btn = document.getElementById('btn');
        btn.onclick = function(){ alert("btn");
        };
        content.onclick = function(){ alert("content");
        };
        document.onclick = function(){ alert("document");
        } </script> </body> </html>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

如果點擊容器#btn,則彈出的順序是:btn-content-document;如果點擊的是容器#content,則彈出的是content-document;如果點擊的是document,彈出的是document。

由此可以看出JavaScript的事件流機制

前面說過,IE提出的是冒泡流,而網景提出的是捕獲流,后來在W3C組織的統一之下,JS支持了冒泡流和捕獲流,但是目前低版本的IE瀏覽器還是只能支持冒泡流(IE6,IE7,IE8均只支持冒泡流),所以為了能夠兼容更多的瀏覽器,建議大家使用冒泡流。

JS事件流原理圖如下: 
 
這里寫圖片描述 


2事件冒泡與事件捕獲

由此可以知道:

1、一個完整的JS事件流是從window開始,最后回到window的一個過程

2、事件流被分為三個階段(1~5)捕獲過程、(5~6)目標過程、(6~10)冒泡過程

示例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> #wrapDiv, #innerP, #textSpan{ margin: 5px;padding: 5px;box-sizing: border-box;cursor: default; } #wrapDiv{ width: 300px;height: 300px;border: indianred 3px solid; } #innerP{ width: 200px;height: 200px;border: hotpink 3px solid; } #textSpan{ display: block;width: 100px;height: 100px;border: orange 3px solid; } </style> </head> <body> <div id="wrapDiv">wrapDiv <p id="innerP">innerP <span id="textSpan">textSpan</span> </p> </div> <script> var wrapDiv = document.getElementById("wrapDiv"); var innerP = document.getElementById("innerP"); var textSpan = document.getElementById("textSpan"); // 捕獲階段綁定事件 window.addEventListener("click", function(e){ console.log("window 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true);

    document.addEventListener("click", function(e){ console.log("document 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true);

    document.documentElement.addEventListener("click", function(e){ console.log("documentElement 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true);

    document.body.addEventListener("click", function(e){ console.log("body 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true);

    wrapDiv.addEventListener("click", function(e){ console.log("wrapDiv 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true);

    innerP.addEventListener("click", function(e){ console.log("innerP 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true);

    textSpan.addEventListener("click", function(e){ console.log("textSpan 捕獲", e.target.nodeName, e.currentTarget.nodeName);
    }, true); // 冒泡階段綁定的事件 window.addEventListener("click", function(e){ console.log("window 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false);

    document.addEventListener("click", function(e){ console.log("document 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false);

    document.documentElement.addEventListener("click", function(e){ console.log("documentElement 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false);

    document.body.addEventListener("click", function(e){ console.log("body 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false);

    wrapDiv.addEventListener("click", function(e){ console.log("wrapDiv 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false);

    innerP.addEventListener("click", function(e){ console.log("innerP 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false);

    textSpan.addEventListener("click", function(e){ console.log("textSpan 冒泡", e.target.nodeName, e.currentTarget.nodeName);
    }, false); </script> </body> </html>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

這個時候,如果點擊一下textSpan這個元素,控制臺會打印出這樣的內容: 
 
這里寫圖片描述

從上面所畫的事件傳播的過程能夠看出來,當點擊鼠標后,會先發生事件的捕獲

· 捕獲階段:首先window會獲捕獲到事件,之后document、documentElement、body會捕獲到,再之后就是在body中DOM元素一層一層的捕獲到事件,有wrapDiv、innerP。

· 目標階段:真正點擊的元素textSpan的事件發生了兩次,因為在上面的JavaScript代碼中,textSapn既在捕獲階段綁定了事件,又在冒泡階段綁定了事件,所以發生了兩次。但是這里有一點是需要注意,在目標階段并不一定先發生在捕獲階段所綁定的事件,而是先綁定的事件發生,一會會解釋一下。

· 冒泡階段:會和捕獲階段相反的步驟將事件一步一步的冒泡到window

上述代碼中的兩個屬性:e.target和e.currentTarget

target和currentTarget都是event上面的屬性,target是真正發生事件的DOM元素,而currentTarget是當前事件發生在哪個DOM元素上。

可以結合控制臺打印出來的信息理解下,目標階段也就是 target == currentTarget的時候。我沒有打印它們兩個因為太長了,所以打印了它們的nodeName,但是由于window沒有nodeName這個屬性,所以是undefined。

那可能有一個疑問,我們不用addEventListener綁定的事件會發生在哪個階段呢,我們來一個測試,順便再演示一下我在上面的目標階段所說的目標階段并不一定先發生捕獲階段所綁定的事件是怎么一回事。

<script>
    var wrapDiv = document.getElementById("wrapDiv"); var innerP = document.getElementById("innerP"); var textSpan = document.getElementById("textSpan"); // 測試直接綁定的事件到底發生在哪個階段
    wrapDiv.onclick = function(){
        console.log("wrapDiv onclick 測試直接綁定的事件到底發生在哪個階段")
    }; // 捕獲階段綁定事件
    window.addEventListener("click", function(e){
        console.log("window 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); document.addEventListener("click", function(e){
        console.log("document 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); document.documentElement.addEventListener("click", function(e){
        console.log("documentElement 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); document.body.addEventListener("click", function(e){
        console.log("body 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); wrapDiv.addEventListener("click", function(e){
        console.log("wrapDiv 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); innerP.addEventListener("click", function(e){
        console.log("innerP 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); textSpan.addEventListener("click", function(){
        console.log("textSpan 冒泡 在捕獲之前綁定的")
    }, false); textSpan.onclick = function(){
        console.log("textSpan onclick")
    }; textSpan.addEventListener("click", function(e){
        console.log("textSpan 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); // 冒泡階段綁定的事件
    window.addEventListener("click", function(e){
        console.log("window 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); document.addEventListener("click", function(e){
        console.log("document 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); document.documentElement.addEventListener("click", function(e){
        console.log("documentElement 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); document.body.addEventListener("click", function(e){
        console.log("body 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); wrapDiv.addEventListener("click", function(e){
        console.log("wrapDiv 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); innerP.addEventListener("click", function(e){
        console.log("innerP 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); textSpan.addEventListener("click", function(e){
        console.log("textSpan 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); </script>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

控制臺打印如下:

這里寫圖片描述

· textSpan是被點擊的元素,也就是目標元素,所有在textSpan上綁定的事件都會發生在目標階段,在綁定捕獲代碼之前寫了綁定的冒泡階段的代碼,所以在目標元素上就不會遵守先發生捕獲后發生冒泡這一規則,而是先綁定的事件先發生。 

[在目標元素上就不會遵守先發生捕獲后發生冒泡這一規則,而是先綁定的事件先發生。]

· 由于wrapDiv不是目標元素,所以它上面綁定的事件會遵守先發生捕獲后發生冒泡的規則。所以很明顯用onclick直接綁定的事件發生在了冒泡階段。


3事件綁定

1、直接獲取元素綁定:

element.onclick = function(e){
        // ... };
    
  • 1
  • 2
  • 3

優點:簡單和穩定,可以確保它在你使用的不同瀏覽器中運作一致;處理事件時,this關鍵字引用的是當前元素,這很有幫助。

缺點:只會在事件冒泡中運行一個元素一次只能綁定一個事件處理函數,新綁定的事件處理函數會覆蓋舊的事件處理函數;事件對象參數(e)僅非IE瀏覽器可用。


2、直接在元素里面使用事件屬性

3、W3C方法:

element.addEventListener('click', function(e){
        // ... }, false);
    
  • 1
  • 2
  • 3

優點:該方法同時支持事件處理的捕獲和冒泡階段;事件階段取決于addEventListener最后的參數設置:false (冒泡) 或 true (捕獲);在事件處理函數內部,this關鍵字引用當前元素;事件對象總是可以通過處理函數的第一個參數(e)捕獲;可以為同一個元素綁定你所希望的多個事件,同時并不會覆蓋先前綁定的事件

缺點:IE不支持,你必須使用IE的attachEvent函數替代。


IE下的方法:

element.attachEvent('onclick', function(){
        // ... });
    
  • 1
  • 2
  • 3

優點:可以為同一個元素綁定你所希望的多個事件,同時并不會覆蓋先前綁定的事件。 
 
缺點:IE僅支持事件捕獲的冒泡階段;事件監聽函數內的this關鍵字指向了window對象,而不是當前元素(IE的一個巨大缺點);事件對象僅存在與window.event參數中;事件必須以ontype的形式命名,比如,onclick而非click;僅IE可用,你必須在非IE瀏覽器中使用W3C的addEventListener。

注意:不是意味這低版本的ie沒有事件捕獲,它也是先發生事件捕獲,再發生事件冒泡,只不過這個過程無法通過程序控制。 


4解除事件

通用:

element.removeEventListener('click', function(e){
        // ... }, false);
    
  • 1
  • 2
  • 3

IE:

element.detachEvent('onclick', function(){
        // ... });
    
  • 1
  • 2
  • 3

5阻止事件傳播

在支持addEventListener()的瀏覽器中,可以調用事件對象的stopPropagation()方法以阻止事件的繼續傳播。如果在同一對象上定義了其他處理程序,剩下的處理程序將依舊被調用,但調用stopPropagation()之后任何其他對象上的事件處理程序將不會被調用。不僅可以阻止事件在冒泡階段的傳播,還能阻止事件在捕獲階段的傳播。

IE9之前的IE不支持stopPropagation()方法,而是設置事件對象cancelBubble屬性為true來實現阻止事件進一步傳播。

<script>
    var wrapDiv = document.getElementById("wrapDiv"); var innerP = document.getElementById("innerP"); var textSpan = document.getElementById("textSpan"); // 測試直接綁定的事件到底發生在哪個階段
    wrapDiv.onclick = function(){
        console.log("wrapDiv onclick 測試直接綁定的事件到底發生在哪個階段")
    }; // 捕獲階段綁定事件
    window.addEventListener("click", function(e){
        console.log("window 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); document.addEventListener("click", function(e){
        console.log("document 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); document.documentElement.addEventListener("click", function(e){
        console.log("documentElement 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); document.body.addEventListener("click", function(e){
        console.log("body 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); wrapDiv.addEventListener("click", function(e){
        console.log("wrapDiv 捕獲", e.target.nodeName, e.currentTarget.nodeName); // 在捕獲階段阻止事件的傳播
        e.stopPropagation(); }, true); innerP.addEventListener("click", function(e){
        console.log("innerP 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); textSpan.addEventListener("click", function(){
        console.log("textSpan 冒泡 在捕獲之前綁定的")
    }, false); textSpan.onclick = function(){
        console.log("textSpan onclick")
    }; textSpan.addEventListener("click", function(e){
        console.log("textSpan 捕獲", e.target.nodeName, e.currentTarget.nodeName); }, true); // 冒泡階段綁定的事件
    window.addEventListener("click", function(e){
        console.log("window 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); document.addEventListener("click", function(e){
        console.log("document 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); document.documentElement.addEventListener("click", function(e){
        console.log("documentElement 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); document.body.addEventListener("click", function(e){
        console.log("body 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); wrapDiv.addEventListener("click", function(e){
        console.log("wrapDiv 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); innerP.addEventListener("click", function(e){
        console.log("innerP 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); textSpan.addEventListener("click", function(e){
        console.log("textSpan 冒泡", e.target.nodeName, e.currentTarget.nodeName); }, false); </script>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

這里寫圖片描述

實際上我們點擊的是textSpan,但是由于在捕獲階段事件就被阻止了傳播,所以在textSpan上綁定的事件根本就沒有發生,冒泡階段綁定的事件自然也不會發生,因為阻止事件在捕獲階段傳播的特性,e.stopPropagation()很少用到在捕獲階段去阻止事件的傳播,大家就以為e.stopPropagation()只能阻止事件在冒泡階段傳播。 


6阻止事件的默認行為

e.preventDefault()可以阻止事件的默認行為發生,默認行為是指:點擊a標簽就轉跳到其他頁面、拖拽一個圖片到瀏覽器會自動打開、點擊表單的提交按鈕會提交表單等等,因為有的時候我們并不希望發生這些事情,所以需要阻止默認行為。

IE9之前的IE中,可以通過設置事件對象的returnValue屬性為false達到同樣的效果。

function cancelHandler(event){ var event=event||window.event;//兼容IE //取消事件相關的默認行為 if(event.preventDefault) //標準技術 event.preventDefault(); if(event.returnValue) //兼容IE9之前的IE event.returnValue=false; return false; //用于處理使用對象屬性注冊的處理程序 }
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

7事件委托

在JavaScript中,添加到頁面上的事件處理程序數量將直接關系到頁面的整體運行性能。導致這一問題的原因是多方面的。首先,每個函數都是對象,都會占用內存;內存中的對象越多,性能就越差。其次,必須事先指定所有事件處理程序而導致的DOM訪問次數,會延遲整個頁面的交互就緒時間。

對“事件處理程序過多”問題的解決方案就是事件委托。事件委托利用了事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。例如,click事件會一直冒泡到document層次。也就是說,我們可以為整個頁面指定一個onclick事件處理程序,而不必給每個可單擊的元素分別添加事件處理程序。

在父級上定義了函數,當點擊目標時,會向上冒泡,到父級執行操作。每一個子元素,都會統一冒泡到父級然后執行。

<ul id="color-list"> <li>red</li> <li>yellow</li> <li>blue</li> <li>green</li> <li>black</li> <li>white</li> </ul>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

如果點擊頁面中的li元素,然后輸出li當中的顏色,我們通常會這樣寫:

(function(){
    var color_list = document.getElementById('color-list'); var colors = color_list.getElementsByTagName('li'); for(var i=0;i<colors.length;i++){ colors[i].addEventListener('click',showColor,false); }; function showColor(e){
        var x = e.target; alert("The color is " + x.innerHTML); }; })();
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

利用事件流的特性,我們只綁定一個事件處理函數也可以完成:

(function(){
    var color_list = document.getElementById('color-list'); color_list.addEventListener('click',showColor,false); function showColor(e){
        var x = e.target; if(x.nodeName.toLowerCase() === 'li'){
            alert('The color is ' + x.innerHTML); } } })();
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

事件委托還有一個好處就是添加進來的元素也能綁定事件:

沒有使用事件委托:

<body> <ul id="thl"> <li>001</li> <li>002</li> <li>003</li> </ul> <button onclick="fun()">touch</button> <script> var thl= document.getElementById('thl'); var aLi = thl.getElementsByTagName('li'); for (var i = 0; i < aLi.length; i++) {
      aLi[i].onclick = fn;
    } function fn (){ console.log(this.innerHTML);
    } function fun(){ var node=document.createElement("li"); var textnode=document.createTextNode("maomaoliang");
        node.appendChild(textnode);
        document.getElementById("thl").appendChild(node);
    } </script> </body>
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

使用了事件委托:

<script> var thl= document.getElementById('thl');
    thl.onclick = function(ev) { ev = ev || event; //兼容處理 var target = ev.target || ev.srcElement; //找到li元素 if (target.nodeName.toLowerCase() == 'li') {
              console.log(target.innerHTML);
         }
    }; function fun(){ var node=document.createElement("li"); var textnode=document.createTextNode("maomaoliang");
        node.appendChild(textnode);
        document.getElementById("thl").appendChild(node);
    } </script>
藍藍設計www.gerard.com.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://www.gerard.com.cn

存檔

主站蜘蛛池模板: 亚洲精品手机在线观看 | 草草女人院| 岛国在线免费视频 | 欧美精品色 | 日韩av在线一区二区三区 | 99久久99这里只有免费费精品 | 丰满少妇大力进入av亚洲 | 少妇愉情理仑片高潮日本 | 国产69精品一区二区亚洲孕妇 | 51综合区亚洲线观看 | 国产强伦人妻毛片 | 狼人伊人干 | av日韩网址 | vvv成人观看视频 | 欧美又大粗又爽又黄大片视频 | 久久国产精品毛片 | 亚洲欧洲日产国码无码久久99 | 亚洲成熟女人毛毛耸耸多 | 欧美色婷婷| 国产精品99久久久久久一二区 | 久久久久有精品国产麻豆 | 国产精品区一区二区三在线播放 | 久久久久久久岛国免费网站 | 欧美黑人一级 | 精品国产一区二区三区久久久蜜臀 | 亚洲专区路线一路线二高质量 | 大伊香蕉精品一区视频在线 | 爱情岛论坛av首页 | 一性一交一摸一黄按摩精油视频 | 乱码午夜-极国产极内射 | 国产精欧美一区二区三区 | 中文字幕乱偷无码av先锋 | 青青草免费在线 | 伊人手机在线视频 | 国产网站免费看 | 国产精品夜夜夜爽张柏芝 | 国产精品对白刺激 | 美女扒开奶罩露出奶头视频网站 | 天堂√8在线中文 | 欧美成人一区二区三区 | 色月婷婷 | 亚洲国产一区二区三区四区 | 欧美日韩在线a | 国产亚洲精品久久久久久久久久久久 | 日韩成人专区 | jlzzjlzzjlz亚洲日本 | 91九色视频在线 | 97欧美一乱一性一交一视频 | 欧美性xxxxx极品少妇偷拍 | 亚洲 丝袜 另类 校园 欧美 | 国产av一区二区三区无码野战 | 少妇人妻无码专区视频 | 免费的a级毛片 | 亚洲精品在线观看视频 | 国产激情无码一区二区app | 中文字幕视频一区 | 婷婷色站 | 国产精品亚亚洲欧关中字幕 | 亚洲8888| 日本三级吃奶头添泬无码苍井空 | www.4hu95.com四虎| 老色鬼在线精品视频在线观看 | 涩涩视频网站在线观看 | 国产精品一区三区 | 亚洲三级影院 | 国产精品高潮呻吟av久久动漫 | 色综合久久久久综合一本到桃花网 | av不卡在线播放 | 影音先锋 成人 | 饭岛爱av片在线播放 | 女子spa高潮呻吟抽搐 | 日鲁鲁| 国产成年妇视频 | jzzijzzij亚洲农村妇女 | 狠狠色噜噜狠狠狠狠色吗综合 | 欧美3p激情一区二区三区猛视频 | 超碰在线免费公开 | 久久aⅴ国产紧身牛仔裤 | 男女超级黄aaa大片免费 | 草草影院第一页 | 日产久久久久久 | 亚洲一区二区三区四区五区中文 | 污污网站免费在线观看 | 四色永久网站在线观看 | 欧美yyy| 午夜性刺激免费看视频 | 精品乱码一区二区三区四区 | 色综合天天射 | 成人午夜毛片 | 免费看日批 | 日本xxxx色视频在线观看免费 | 日本高清视频一区二区三区 | 日本一二三区视频在线 | 妺妺窝人体色www在线观看 | 欧美黑人精品一区二区不卡 | 亚洲国产成人av毛片大全 | 亚洲人成网7777777国产 | 川上优av一区二区线观看 | 无码av波多野结衣久久 | 欧美成人免费在线 | 天堂最新资源在线 | 日本久热 | 日韩福利在线视频 | 美女精品一区二区 | 西西人体www大胆高清 | 91在线精品入口 | 亚洲干| 国产成人精品免费视频 | 自拍 另类 综合 欧美小说 | 最近中文字幕第一页 | 国产麻豆精东果冻传媒 | 综合网在线视频 | 翘臀后进少妇大白嫩屁股视频 | 日本少妇翘臀啪啪无遮挡动漫 | 亚洲啪啪aⅴ一区二区三区9色 | 风韵丰满熟妇啪啪区老熟熟女 | 在线不卡欧美 | 99激情网 | 亚洲日本欧美日韩高观看 | 久久精品a亚洲国产v高清不卡 | www.偷拍.com| www中文字幕com| 亚洲精品一区二区三区香 | 久久久在线观看 | 亚洲精品丝袜久久久久久 | 天天躁夜夜躁狠狠综合 | 国产理论片在线观看 | 天天操天天操天天操天天 | 中文字幕国产剧情 | 日韩人妻熟女中文字幕a美景之屋 | 久久久亚洲国产天美传媒修理工 | 国产精品成人免费一区久久羞羞 | 国产欧美一区二区精品仙草咪 | 成人免费无遮挡做性视频 | 老司机午夜精品视频 | 国产女人精品 | 野战的情欲hd三级 | 热热色视频| 国产99一区| 阿拉伯性视频xxxx | 学生粉嫩无套白浆第一次 | 亚洲一区网站 | 丁香花在线观看免费观看图片 | 欧美视频日韩视频 | 亚洲三区在线观看无套内射 | 小荡货奶真大水多好紧视频 | 丰满爆乳无码一区二区三区 | 香蕉在线播放 | 色中色在线视频 | 日本一区二区精品视频 | 国产偷国产偷亚洲清高app | a级黄色网 | 神马久久网 | 色哟哟免费视频 | 91九色蝌蚪 | 日韩精品无码一区二区三区不卡 | 青青草视频在线观看 | 久久三级黄色片 | 999色综合| 天天色天天综合 | 91制服诱惑| 精品一区二区三区免费播放 | 国产精品久久久久婷婷二区次 | 91亚洲精品久久久久图片蜜桃 | 99久久精品国产片果冻的功能特点 | 天天操天天弄 | a毛看片免费观看视频 | 81精品国产乱码久久久久久 | 亚洲夜色噜噜av在线观看 | 在线免费观看污网站 | 精品国产一区三区 | 丰满少妇高潮叫久久国产 | 6080yy精品一区二区三区 | 久久久久久久97 | 亚洲中字幕 | 手机午夜视频 | 日本美脚玉足脚交 | 久久国产精品偷任你爽任你 | 黄色毛片毛茸茸 | 日韩a级在线观看 | 成人免费看黄网站在线观看 | 蜜臀久久 | 亚洲一区二区三区日本久久九 | 大战熟女丰满人妻av | 国产精品区在线观看 | 91视频精品 | 亚洲国产av美女网站 | 无码专区人妻系列日韩精品少妇 | 黄色18网站 | 青娱乐av在线 | 日韩欧美tⅴ一中文字暮 | 中文字幕一区二区三区乱码不卡 | 337p粉嫩大胆色噜噜噜 | 51久久成人国产精品 | 中出乱码av亚洲精品久久天堂 | 久久中文字幕网 | 全部av―极品视觉盛宴 | 视频在线观看一区 | 国产成人一二三 | eeuss鲁一区二区三区 | 国内毛片毛片毛片毛片毛片 | 又大又硬又爽18禁免费看 | 国产曰又深又爽免费视频 | 国产精品久久久一区二区三区网站 | 97超碰人人模人人人爽人人爱 | 色中色综合网 | 亚洲精品国产精品国自产在线 | 成人xxx| 一本一道久久 | 婷婷色婷婷开心五月四房播播 | 日本免费在线播放 | 成人网色| 樱花草涩涩www在线播放 | 肉版如懿传高h | 少妇性bbb搡bbb爽爽爽 | 成人免费视频一区二区 | 日韩精品系列 | 一个色综合亚洲色综合 | 99re在线观看 | 亚洲精品久久久久久久蜜桃 | 成年人免费看黄色 | 日韩专区av| 亚洲乱码伦av | 男女做羞羞在线观看 | 午夜亚洲一区 | 久久午夜国产精品www忘忧草 | 国产精品久久久久久久裸模 | 日韩视频免费观看 | 亚洲精品嫩草 | 明星乱淫免费视频欧美 | 影音先锋中文字幕在线播放 | 三级视频在线观看 | 紧缚捆绑精品一区二区 | 精品黑人一区二区三区久久 | 精品中文字幕一区二区 | 好了av四色综合无码 | 欧美日韩中文字幕在线视频 | 精品国产一区二区三区色欲 | 黄色激情四射 | 欧美老肥妇做.爰bbww视频 | 香蕉a | 久久99精品国产自在现线小黄鸭 | www.夜夜骑.com | 国产91在线播放精品91 | 噜噜色成人 | 黄色一节片 | 精品久久久无码中文字幕天天 | 亚洲国产精品久久精品怡红院 | 国产日产欧产精品精乱了派 | 夜夜性日日交xxx性视频 | 国产女人在线视频 | 天堂av国产夫妇精品自在线 | 每日av在线 | 一级欧美在线 | 国产乱码精品一区二区三区不卡 | 在线观看污 | 2020无码专区人妻系列日韩 | 99精品久久久久久久婷婷 | 国产不卡视频一区二区三区 | 成人福利视频导航 | 午夜剧场在线 | 四虎影视国产精品免费久久 | 亚洲精品tv| 成人综合婷婷国产精品久久 | 乱中年女人伦av一区二区 | 好爽好大久久久级淫片毛片小说 | 少妇精品免费视频欧美 | 青青草娱乐在线 | 94av视频 | 精品一区二区在线视频 | 国产激情91久久精品导航 | 日本三级一区 | 女人18毛片a级毛片一区二区 | 亚洲第一综合天堂另类专 | 久久久国产精品亚洲一区 | 国产精品乱码一区 | 欧美三级午夜理伦三级老人 | 亚洲欧美日韩人成在线播放 | 国产真实乱偷精品视频免 | 黄免费在线 | 91麻豆精品91久久久久同性 | 欧美另类xxxx | 99re在线视频免费观看 | 日韩性插 | 另类老妇奶性生bbwbbw | 午夜三级做爰高潮 | 色翁荡息又大又硬又粗又爽 | 69精品人人 | 亚洲国产精品一区二区三区 | 日本三级视频 | www.天天综合 | 精品99在线| 天天色播 | 中文字幕日韩精品在线观看 | 久久久久久久久99精品大 | 大象传媒成人在线观看 | av特黄| 欧美aaa级片 | 久久996re热这里只有精品无码 | 色七七网站 | 婷婷久久综合九色综合绿巨人 | 国产啊~cao死你个小sao货 | 同性情a三级a三级a三级 | 亚洲 自拍 都市 欧美 小说 | 一二三四区在线 | av国産精品毛片一区二区三区 | 男女男精品视频网站 | av在线操| 1024永久福利手机看片 | 国产精品无码制服丝袜 | 精品自拍亚洲一区在线 | 国产最爽的乱淫视频媛 | 交换做爰2中文字幕 | 精品久久久久久久免费人妻 | 美女国产一区 | 美女视频一区二区 | 亚洲狼人综合 | 国产亚洲欧美在线观看 | 男女爽爽爽视频 | 国产又大又粗又猛又爽的视频 | 99久久久无码国产aaa精品 | 久久精品欧美一区二区三区麻豆 | 嫩草网站入口一区二区 | 欧美激情精品久久久久久蜜臀 | 毛片在线观看视频 | 交做爰xxxⅹ性爽 | 一木久道热线m38在线 | a级淫片一二三区在线播放 a天堂v | 99久久欧美日韩国产二区 | 外国一级片| 东京一木一道一二三区 | 六个黑人玩一个中国少妇视频 | 日韩精品毛片无码一区到三区 | 九九九九热精品免费视频点播观看 | 俄罗斯少妇性高清ⅹxx | 欧洲一区在线观看 | 好吊色视频在线观看 | 老司机午夜福利av无码特黄a | 99久热re在线精品99 6热视频 | 激情视频区 | 国产精品视频在线播放 | 高清二区 | 日韩精品免费一区二区三区竹菊 | 性色av浪潮av| 国产精品人人爽 | 久久精品99久久久久久2456 | 一级片免费 | 久久国产欧美日韩精品 | 国产精品久久久久一区二区 | 乱码av| 午夜美女久久久久爽久久 | 天天夜夜啦啦啦 | 国产成人精品视频网站 | 亚洲乱码中文字幕在线 | 伊人欧美在线 | blacked欧美极品一区 | 免费在线观看av网站 | 最新中文字幕第一页 | 成年人激情网站 | 伊人青青久久 | 亚洲精品久久久久午夜福禁果tⅴ | 成人国产精品一区二区 | 97超级碰碰人妻中文字幕 | 久久狼人亚洲精品一区 | 亚洲国产真实交换 | 爱爱二区 | 国产一区二区午夜 | 亚洲九九九 | 欧美性受xxxx黑人xyx性爽 | 国产亚洲福利 | 51国产黑色丝袜高跟鞋 | 久久久精品久久日韩一区 | 日韩综合av | 国内精品久久久久影院中文字幕 | 日韩成人三级 | 深夜福利1000| 国变精品美女久久久久av爽 | 在线观看网址你懂的 | 四虎884aa成人精品最新 | 免费观看午夜视频 | 国产精品久久久久久久久久久新郎 | 国产欧美日韩精品一区 | 91丨九色 | 少妇高潮淫片免费观看 | 欧美三级午夜理伦三级老人 | 明星性猛交ⅹxxx乱大交 | 日本高清视频一区 | 欧美性性欧美 | 人人舔人人 | 黄a视频| 亚洲免费激情视频 | 九九精品在线播放 | 麻豆av在线播放张芸熙 | 又大又粗弄得我出好多水 | jizz欧美| 日本免费一区二区三区四区五区 | 欧美激情内射喷水高潮 | 97人人澡人人爽人人模亚洲 | 三级视频在线播放 | 青娱乐免费在线视频 | 亚洲性天堂 | 欧美日韩另类一区二区 | 日韩在线视频观看免费 | 男女做爰猛烈吃奶摸九色 | 天天躁日日躁狠狠躁人妻 | 国产综合在线播放 | 欧美精品久久久久久久久久久 | 性国产激情精品 | 中文字幕亚洲精品日韩 | 精品黑人一区二区三区久久 | 插久久 | 日本xxxxx69hd日本 | 桥本有菜aⅴ一区二区三区 桥本有菜免费av一区二区三区 | 女av在线 | 亚洲成年人专区 | 成人网在线 | 欧美黄色免费在线观看 | 伦理片免费完整片在线观看 | 性色在线视频 | 偷拍夫妻性生活 | 午夜综合 | 亚洲3p激情在线观看 | 欧美一级淫片aaaa | 日韩欧美爱爱 | 欧美 在线 | 四虎免费久久 | 午夜久久久久久久久久一区二区 | 国产99热 | 午夜性片 | 日韩av资源 | 毛片黄色片 | 久久永久视频 | 欧美视频在线一区二区三区 | 国内av在线播放 | 91视频美女 | 影音先锋在线资源无码 | 青青在线免费观看 | 亚洲国产精品成人无久久精品 | 不卡精品视频 | 欧美日韩大片在线观看 | h在线网站 | 337p日本欧洲亚洲大胆 | 午夜久久网 | 中国女人黄色大片 | 日本免费人成视频播放 | 北京少妇宾馆露脸对白 | 天天躁日日躁狠狠躁超碰97 | 亚洲国产精品久久久久秋霞 | 一区二区视频免费看 | 狠狠色老熟妇老熟女 | 91精品国产色综合久久不卡98 | 成人性生交大片免费7 | 东北女人啪啪对白 | 麻豆免费看片 | 中文字幕在线一区二区三区 | 欧美亚洲精品一区二区 | 中文字幕免费视频观看 | 亚洲国产欧美在线观看 | 成人中文字幕在线 | 久久久精品国产99久久精品麻追 | 老少交欧美另类 | 欧美黄在线 | 免费黄色链接 | 综合久久影院 | 五月天久久 | 欧美亚洲亚洲日韩在线影院 | 丰满人妻一区二区三区无码av | 爽天天天天天天天 | 国产freexxxx性播放麻豆 | 国产另类综合 | 好吊色国产欧美日韩免费观看 | 欧美在线视频第一页 | 国产午夜av秒播在线观看 | 国内精品久久久久久久影视蜜臀 | 成人无号精品一区二区三区 | 国产成人精品视频网站 | 野狼av午夜福利在线 | 亚洲最大看欧美片网站 | 国产视频xxxx | 在线一区二区视频 | 欧洲精品码一区二区三区免费看 | 日韩中文一区二区三区 | 五月天综合网 | 国产精品嫩草影院桃色 | 性网爆门事件集合av | 国产视频xxxx | 亚洲成av人不卡无码影片 | 久本草精品 | 国产天天操 | 国产精品美女久久久久久久久久久 | 偷看农村女人做爰毛片色 | 丁香在线| 日韩在线网址 | 美女脱了内裤张开腿让男人桶网站 | 国产精品7m凸凹视频分类 | 国内丰满少妇猛烈精品播 | 成年人免费看视频 | 国产成人综合色在线观看网站 | 7777奇米四色眼影国产馆 | 天天做天天爱夜夜爽导航 | 久久久婷婷五月亚洲97号色 | 久久婷婷五月综合色和啪 | 久久久久久久久久久久久久久久久久久 | 可以在线观看av的网站 | ww又激又色又爽又免费视频 | 女生高潮视频在线观看 | 高清在线一区 | 波多野结衣先锋影音 | 91久久婷婷国产一区二区三区 | 久久国产免费直播 | 久久久久久亚洲精品无码 | 女人与拘性猛交视频 | 窝窝人体色www | 日产mv免费观看 | 国产在线观看你懂的 | 国产精品久久久久9999 | 午夜精品久久久久久久 | 国产孕妇孕交高潮 | 亚洲永久网站 | av成人在线免费观看 | 奇米影视777四色米奇影院 | 日日躁狠狠躁aaaaxxxx | 亚洲日韩国产成网在线观看 | 国产3p又大又爽又粗又硬免费 | 久久av免费看 | 手机在线免费观看av片 | 成人av免费观看 | 三级毛片在线 | 日韩一区二区三区射精 | 亚洲欧美综合色 | 国产又色又爽又黄刺激视频免费 | 国产精品久久久久久久久久直播 | 国产免费一级淫片a级中文 国产免费一区 | 激情综合亚洲色婷婷五月app | 欧美野外疯狂做受xxxx高潮 | 国产在线视频资源 | 中文字幕在线免费观看 | 国产禁女女网站免费看 | 伦理欧美| 最新国产精品亚洲 | 国偷自产视频一区二区久 | 韩国午夜理论在线观看 | 综合天堂av久久久久久久 | 午夜视频免费在线观看 | 亚洲成人精品在线观看 | jzzjzz日本丰满少妇 | 天天综合网91| 国产精品女同磨豆腐磨出水了 | 国产福利精品视频 | videosgratis极品另类灌满高清资源 | 欧美资源在线 | 中文字幕二 | 欧美又大又硬又粗bbbbb影院 | 在线看一区 | 欧美日韩精品一区 | 在线观看特色大片免费视频 | 俺来也俺来啦awww官网 | 国产一卡二卡在线 | 国产精品www老牛影视 | 无码日韩精品一区二区免费暖暖 | 免费人成网站 | 超碰在线天天 | 日韩高清成人 | 精品在线视频一区二区三区 | 二男一女一级一片视频免费 | 97在线超碰 | 豆国产97在线 | 亚洲 | 亚洲综合色区中文字幕 | 国产精品久久久久久中文字 | 高h辣h情趣道具h黄n男一女 | 欧美精品密入口播放 | 成人在线播放视频 | 免费人成在线观看视频高潮 | 国产卡一卡二卡三 | www.亚洲视频 | 9l视频自拍九色9l视频大全 | 国产黄a三级三级三级看三级男男 | 中文字幕亚韩 | 国产精品9999久久久久仙踪林 | 午夜大片男女免费观看爽爽爽尤物 | 亚洲aⅴ无码专区在线观看春色 | 亚洲欧洲综合 | 午夜婷婷在线观看 | 亚洲成人91| 青草福利在线 | 日本午夜无人区毛片私人影院 | 欧美午夜精品久久久久久孕妇 | 福利精品视频 | 国产成人综合久久 | 国产精品久久久久久久毛片 | 第四色成人网 | 国产福利免费在线 | 午夜无人区免费网站 | 国产在线视频你懂的 | 成人免费看吃奶视频网站 | 天天爱天天做天天大综合 | 91亚洲精品久久久 | 国产精品香蕉500g | 欧美精品久久久久久久免费 | 欧美日韩色图片 | 中文字幕无码色综合网 | 国产精品区一区二区三 | 国产极品美女做性视频 | 日韩精品视频一区二区三区 | 免费黄色在线网站 | 欧美天天色| 久操社区 | 国产一线二线三线在线观看 | 免费国产一区二区 | 欧美日韩在线看 | 亚洲精品久久久久中文字幕二区 | 狠狠精品久久久无码中文字幕 | 黄色在线视频网站 | 九九99九九精彩4 | 亚洲男人最新版本天堂 |