<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-67  評論-522  文章-0  trackbacks-0
        關于jQuery操作DOM的內容完了嗎?不,還沒有,還有更多!
        1、盡可能的用#id和屬性選擇器
        在選擇DOM元素時,jQuery的選擇器無疑提供了非常多的功能,除了特性選擇器外,對文檔元素的查找操作,我覺得還是#id[attribute]最為實用,當然這不是否定其它的選擇器。我這樣說是有原因的。
        在實際開發中,程序員一般是以模塊為單位進行功能開發,那么從前臺到后臺都是一個人在做。而頁面的美化工作可能會交給美工(也可能是前臺開發人員)來完成,如果需要對DOM的結構進行調整或重新布局,這時,當腳本中使用了CSS選擇器或位置選擇器,這時,你能保證不會對功能有影響嗎?難道還要和開發人員進行溝通,這里不能這樣寫,那里需要調整??墒且粋€系統中的頁面會只有一兩個嗎?這樣改下來,得要多少時間?這時有人會說了,你設計沒做好,設計之初就應該考慮好,樣式布局就應該做好。那么就不會出現這樣的問題。是的,設計很重要,設計的好壞決定項目成敗。但是,我要告訴你,世上沒有絕對的事情,我們所做的一切都是以客戶為出發點,客戶不滿意了,要你改,你能不改嗎?
        使用ID的好處顯而易見,給元素加上ID,通過ID獲得該元素對象,然后進行相應操作,不管結構如何變化,代碼不用修改。請一定注意,ID不能重復了。
        可是ID只能對單一元素進行操作(這是相對的,后面有講到對ID也可以批量操作),如果有多個元素怎么辦呢?這里就要用到屬性選擇器了。幫助文檔里羅列了各種屬性選擇器,而且有說明和示例。不過例子太簡單了,會讓很多人沒有感覺,對它沒有引起足夠的重視,在這里大象用幾個實例來說明一下它們的用法。
        a)
    $(function(){
        $(
    "[name=ctrRadio]").each(function(){
            $(
    this).click(
                
    function(){
                    
    // click事件代碼
                }
            );
        });
    });
    <input type="radio" name="ctrRadio" /> // 有很多個單選按鈕,組成一個單選按鈕組
        頁面數據列表一般采取分頁顯示,每頁10條、15條或更多,每一行都添加了一個單選按鈕,在初始化時,我們給每個單選按鈕綁定一個click事件,所以這里我們使用[attribute=value]形式的屬性選擇器來實現我們的需求。另外name值如果定義好了,我們也不會輕易再去改動它,調整單選按鈕的位置也不會影響到代碼。比如現在位于每行的第一列是單選按鈕,后來客戶要求,要將它放到最后一列去,或是將type改成button,這都不會影響原來實現的代碼。除非你要把它改成checkbox,那么,這應該算是需求變更了吧?
        b)
    $(function(){
        $(
    "[name$='chk']").attr("checked","checked").click(
            
    function(){
                
    var chkbox = $(this); // this是當前的復選框對象,$(this)是獲得該復選框的jQuery對象
                
    if(chkbox.attr("checked")){
                    alert(
    "選擇: "+chkbox.val());
                }
    else{
                    alert(
    "取消: "+chkbox.val());
                }
            }
        );
    });
    <div><input type="checkbox" name="stationchk" value="a" />1</div>
    <div><input type="checkbox" name="stationchk" value="b" />2</div>
    <div><input type="checkbox" name="intervalchk" value="c" />3</div>
    <div><input type="checkbox" name="intervalchk" value="d" />4</div>
    <div><input type="checkbox" name="commonchk" value="e" />5</div>
    <div><input type="checkbox" name="commonchk" value="f" />6</div>
        文檔初始化時,通過屬性選擇器查找所有name名稱以chk結尾的DOM元素,并將它設為選中狀態,同時給它綁定click事件。這里可以在[name$='chk']前面加上input,縮小搜索范圍。當然,你得確保以chk結尾的都是你想操作的checkbox,避免出現讓自己困惑的BUG。因此在做之前,充分的思考很有必要,這會大大提高你的開發效率和減少出現錯誤的機率。雖然表面看起來多花了一點時間,但是你會覺得這是很值得的。
        [attribute^=value][attribute$=value]是相對的一組選擇器,前者是匹配指定的屬性以某些值開始的元素,后者剛好相反,匹配給定的屬性是以某些值結尾的元素,請一定記住attribute是屬性,比如上面的type、name、value等等。在項目中大量的通過idname屬性來批量的操作DOM元素。
        我說下怎么通過ID獲得多個集合,其實很簡單,在設置ID值的時候,給它定義一個字符串再加上其它的唯一標識就能夠實現這一功能。

    <c:forEach var="info" items="${infos}">
        
    <input name="modinfo" id="modInfo_${info.parent_id}_${info.f_id}" type="checkbox" value="${info.f_id},${info.parent_id}" />
    </c:forEach>
        在數據庫中f_id是主鍵標識,因此它具有唯一性,parent_id是父ID,它們和modInfo_組合起來就可以成為id屬性的唯一標識。forEach循環會產生多個checkbox,所以我們就使用$("[id^='modInfo_']")表達式來取得結果集。有人會問有name不就行了嗎?為什么還要設置id?而且還要將兩種ID值與字符串拼接成復選框的id屬性值。這是由于功能需要,不光要用到name,還要用到id,而且checkbox上還綁定了click,事件處理中還會用到value中的值。有時我們的業務需求確實很復雜,這時我們就可以采取這種方式來區分彼此之間存在一些聯系而又獨立的DOM集合。
        在實際項目當中如何組合,還是得具體問題具體分析。另外,我們也不能忘掉那些特性選擇器,它們同樣很有用。

        c)
    $(function(){
        $(
    "[name^='station']:checkbox").attr("checked","checked").click(
            
    function(){
                
    if($(this).attr("checked")){
                    alert(
    "選擇: "+$(this).val());
                }
    else{
                    alert(
    "取消: "+$(this).val());
                }
            }
        );
    });
    <div><input type="checkbox" name="stationchk" value="a" />1</div>
    <div><input type="checkbox" name="stationchk" value="b" />2</div>
    <div><input type="checkbox" name="intervalchk" value="c" />3</div>
    <div><input type="checkbox" name="intervalchk" value="d" />4</div>
    <div><input type="checkbox" name="commonchk" value="e" />5</div>
    <div><input type="checkbox" name="commonchk" value="f" />6</div>
    <div><input type="radio" name="stationrad" value="g" />7</div>
    <div><input type="radio" name="stationrad" value="h" />8</div>
        這個例子在b)的基礎上作了一些修改,它表示在文檔初始化時,通過屬性選擇器查找所有name名稱以station開頭并且typecheckboxDOM元素,同時綁定click事件。如果將:checkbox去掉會不會有變化呢?答案是肯定的,單選按鈕組也被綁定了事件。再看幾個例子
    $("[name=ctrRadio]:checked").attr("checked",""); //取消已選中的單選框
    $("[id^='modInfo_']").is(":hidden"); //如果表達式中的集合只要有一個不可見,就返回true
    $("select[name='contract_kind'] option:eq(0)").attr("selected","selected"); //選中第一條記錄
        2、jQuery屬性——很好,很強大
        attr、addClassremoveClasscss、html、text、valheightwidth這些命令在實際應用中的使用頻率非常高,應該把它們全部掌握。這些屬性都有賦值與取值的方法,為我們操作DOM提供了很方便的支持。舉幾個例子說明一下
    $(":button").addClass("button1"); //給所有的按鈕添加樣式
    $("#ctr_info").attr("src","${ctx}/BaseAction.do?method=list"); //給id為ctr_info的iframe的src屬性設置地址
    $("#stationchk").attr("checked"); //獲得復選框是否選中,選中為true,否則為false
    $("#sum").css("ime-mode","disabled"); //屏蔽輸入法
    $("[name='stationchk']").parent().html("哈哈"); //返回包含匹配表達式的唯一父元素的元素集合
    $("#ctr_info").load(function(){
        var ifr_height = $(this).contents().find("#ctr_other").height(); //通過ID重新計算iframe的高度
        ifr_height = ifr_height < 400 ? 350 : ifr_height;
        $(
    this).height(ifr_height);
    });
        這些屬性的運用技巧需要多做才能加深理解,對于以前使用原生JavaScript來編寫腳本的程序員而言,無疑是一件很幸福的事,極大的簡化了代碼,減少了很多的工作量。
        3、豐富的文檔處理功能
        從幫助文檔中,我們可以看到,jQuery提供了一套很完備的文檔處理函數?;旧闲枰械亩及?。大象目前也只是使用了其中一部分,當然這跟應用環境也有關。來看個例子
    $(function(){
        $(
    "#btn_add").click(
            
    function(){
                $(
    "<div name='_info'><input type='text' name='info'/>&nbsp;&nbsp;&nbsp;<input name='btndel' type='button' value='刪除' /></div>").find(":button").click(
                    
    function(){
                        
    var index = jQuery("[name='btndel']").index(this); //this是刪除按鈕這個對象,index是獲得該按鈕在這組集合中的索引值
                        $("[name='_info']:eq("+index+")").remove();
                    }
                ).end().appendTo(
    "#div_info");
            }
        );
    });
    <div><input id="btn_add" type="button" value="增加" /></div>
    <div id="div_info"></div>
        這段很少的代碼卻幫我們做了相當多的事情,詳細分析一下
        在文檔初始化的時候,對增加按鈕綁定事件,當點擊增加時,我們創建一個文本框和一個刪除按鈕的div,然后使用查找功能(find)在剛創建的html中找到button按鈕(:button),這時會返回<input name='btndel' type='button' value='刪除' />這個DOM元素的jQuery對象,接著給這個按鈕綁定事件,使之,當我們點擊某個刪除按鈕時,刪除對應的元素。隨后我們退回(end)到創建的div。最后把這個新增的元素追加到div_info元素之后,運行這個示例看看效果。PS創建DOM時,如果比較復雜,可以用變量來拼接字符串,最后再放到$()里面。
        這個例子充分體現了jQuery鏈的強大,一條語句就完成了這么多的功能,請大家充分利用jQuery鏈。牢記jQuery對象與DOM對象的區別。
        在刪除的時候使用的是remove()而沒有使用empty(),這兩個方法執行后都會返回jQuery集合,不同的是,remove()會將元素從頁面DOM中刪除,而empty()只是刪除匹配集合中的子節點(包括文本),但仍保留其在DOM中所占的位置。示例

    $(function(){
        $(
    "#btn_del").click(
            
    function(){
                $(
    "p").empty();
                
    //$("p").remove();
            }
        );
    });
    <input id="btn_del" type="button" value="刪除" />
    <p>hello</p>
    jquery
    <p>welcome</p>
        Firefox來運行示例,啟動Firebug工具可以看到文檔加載完成時的情況
                        
        當我們點擊刪除后,結果如下
                
        再看執行remove方法后的結果
                
        文檔處理的方法還有很多,我只能就遇到及使用過的舉些例子說明一下,其它的就需要在大家工作中去發現去總結,也請各位把自己的心得體會分享出來,讓我們一起學習,共同提高。所有代碼均在jquery-1.2.6版本下測試通過。
        本文為菠蘿大象原創,如要轉載請注明出處。
    posted on 2010-02-24 21:46 菠蘿大象 閱讀(6511) 評論(22)  編輯  收藏 所屬分類: jQuery

    評論:
    # re: jQuery學習總結(三) 2010-02-25 09:03 | HiMagic!
    jquery-1.2.6? 這是什么時候寫的?  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-02-25 10:13 | 菠蘿大象
    @HiMagic!
    最近剛寫的,我一直都用的是jquery-1.2.6,因為當時做的時候是2009年2月,1.3剛發布不久,為了穩妥起見,決定還是采用1.2.6。  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 10:56 | 大灰狼
    我的表單中有個submit按鈕,如何用jquery來禁止回車提交呢
    <form action="login.action" method="post">
    <table cellspacing="0" cellpadding="0" align="center">
    <tbody>
    <tr>
    <td>
    <img src="<%=path%>/login/pic/logo.jpg" width="609" height="205" align="middle">
    </td>
    </tr>
    <tr class="login_field">
    <td align="center" valign="middle" height="37">
    <b>用戶名</b><input id="username" name="username" class="text" type="text" size="10" maxlength="30" tabindex="1"></input>
    <b>密碼</b><input id="password" name="password" class="password" type="password" size="10" maxlength="30" tabindex="2"></input>
    <b>驗證碼</b><input id="vercode" name="vercode" class="text" type="text" size="10" tabindex="3"></input>
    <a href="#" ><img id="authImg" src="<%=path%>/login/authImg.jsp" name="d" border="0" align="middle" title="看不清?點擊更換驗證碼!"/></a>
    <input id="input" name="submit" type="submit" value="登 錄" class="submit" tabindex="4"></input>
    </td>
    </tr>
    </tbody>
    </table>
    </form>  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 10:57 | 大灰狼
    只讓回車時焦點移到下一個輸入框中,不讓提交,如何實現這 樣的功能  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 11:20 | 菠蘿大象
    @大灰狼
    你可以對這三個文本框設置事件,按回車時,如果有值就跳到下一個本文框,沒有值就停留在當然前本文框中,當所有文本框都有值時,再點回車就提交表單,如果想做的更好點,可以加入AJAX驗證,比如當然離開用戶名文本框焦點時,到后臺去驗證有無此用戶名,等等功能都能實現。  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 12:59 | 大灰狼
    ajax的驗證用戶名我已經做了就是當失去焦點時用ajax判斷,用戶名是不是存在,我的登錄按鈕的type改button后,這個表單無法提交了,如果改為submit按回車是要提交的,可是那樣就失去了按回車移到一下個輸入框的功能了。如果這樣<input id="input" name="submit" type="button" value="登 錄" class="submit" tabindex="4"></input> 在jquery中如何改動,才能點擊登錄按鈕時的提交事件  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 14:58 | 菠蘿大象
    @大灰狼
    看來大灰狼童鞋對jQuery的API還不熟悉,如果你沒有api,可以在我寫的第一篇下載chm文檔。如果form設置了id,比如叫loginform,在jQuery中,有一個submit()方法,$("#loginform").submit();就是提交表單。同理,你設置文本框的焦點,同樣可以用jQuery提供的focus()方法,而且它返回一個jQuery對象,請注意不是DOM對象,所以可以繼續以鏈式語法在后面加東西。jQuery的功能非常強大,一定要先對API深入學習下,這樣開發會事半功倍滴。  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 16:00 | 大灰狼
    謝謝你了,
    還是不行下面 是我的form:
    <form id="loginform" action="login.action" method="post">
    <table cellspacing="0" cellpadding="0" align="center">
    <tbody>
    <tr>
    <td>
    <img src="<%=path%>/login/pic/logo.jpg" width="609" height="205" align="middle">
    </td>
    </tr>
    <tr class="login_field">
    <td align="center" valign="middle" height="37">
    <b>用戶名</b><input id="username" name="username" class="text" type="text" size="10" maxlength="30" tabindex="1"></input>
    <b>密碼</b><input id="password" name="password" class="password" type="password" size="10" maxlength="30" tabindex="2"></input>
    <b>驗證碼</b><input id="vercode" name="vercode" class="text" type="text" size="10" tabindex="3"></input>
    <a href="#" ><img id="authImg" src="<%=path%>/login/authImg.jsp" name="d" border="0" align="middle" title="看不清?點擊更換驗證碼!"/></a>
    <input id="input" name="submit" type="button" value="登 錄" class="submit" tabindex="4"></input>
    </td>
    </tr>
    </tbody>
    </table>
    </form>
    下面是我的js,在一個單獨的文件里:
    $("#vercode").keypress(
    function(e)
    {
    if (e.keyCode == 13)
    {
    if (($("vercode").attr("value"))!="" || ($("#vercode").attr("value"))!=null)
    {
    $("#loginform").submit();
    }else
    {
    $("#vercode")[0].focus();
    }
    }
    });
    用這個為什么仍然不能提交呢?  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 16:15 | 大灰狼
    $("#loginform").submit();也就是這句沒有觸發提交事件,但是在這句的上面加上alert的時候是執行了的,就是$("#loginform").submit();這句沒有執行,是何原因  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 16:20 | 大灰狼
    我在那個username的輸入框中觸發blur事件的時候已經用ajax提交了一次數據了,不會有影響吧  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 16:37 | 菠蘿大象
    @大灰狼
    你的代碼存在好幾個問題
    第一,if (($("vercode").attr("value"))!="" || ($("#vercode").attr("value"))!=null) 使用ID選擇器,你沒有加#號
    第二,對于取值,jQuery有相當簡潔的方法$("#vercode").val(),另外不用加多重括號,你這里沒有進行多條件的組合判斷。
    第三,你這個條件不應該是||,而應該是&&
    第四,$("#vercode")[0].focus(); 這就變成DOM方法了,而且是在函數內定義,可以直接寫成$(this).focus();
    第五,不能寫成name="submit",把name屬性去掉,對于按鈕,沒有必要去設置它的name屬性,就算要設置,也不要設置成submit,造成腳本錯誤。  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 17:12 | 大灰狼
    剛剛我已經解決了,不過還沒注意到你寫的問題,謝謝你了。但是第五條跟我的做法是一樣的,我把ID和name設置成一樣的都是inpu,就沒有錯誤了,謝謝您的指點。  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 17:21 | 大灰狼
    這幾天看您的帖子受益非淺,能不能另開個帖子寫一下,關于頁面布局的問題,就是frameset與div的問題,我們原來的項目中大量的應用了frameset尤其是登錄后的主頁面。  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-26 20:37 | 菠蘿大象
    @大灰狼
    頁面布局這涉及到CSS,大象對這塊不擅長,所以無能為力啦,不過目前好的頁面設計全是div+css,而不會去用frameset這些東西,連table都不用,你注意看國外的網站,都是div+css風格  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-27 08:36 | 大灰狼
    謝謝了,有機會共同學習  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-27 22:28 | 大灰狼
    繼續請教個問題,上來我做的那個單獨的JS文件今天剛讓我不心刪除了,里面有一段是關于圖形驗證嗎,也就是說用鼠標點擊那個圖形的時候重新生成一張新的。在沒有用jquery前是這樣寫的<a href="#" onclick="refresh()"><img id="authImg" src="<%=path%>/login/authImg.jsp" border="0" align="middle" title="看不清?點擊更換驗證碼!"/></a>
    function refresh()
    {
    document.getElementById("authImg").src='/wscm/login/authImg.jsp?now='+new Date();

    }
    用jquery后<a href="#" ><img id="authImg" src="<%=path%>/login/authImg.jsp" border="0" align="middle" title="看不清?點擊更換驗證碼!"/></a> 然后在那個單獨的js文件中這樣寫的 $("#authImg").click(
    function()
    {
    $(this).attr("src")="/wscm/login/authImg.jsp?now="+new Date();
    });
    為什么現在點擊圖片沒有反應了呢?  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-27 22:29 | 大灰狼
    不用jquery的時候是正常的,是不是我的jquery寫錯了呢
      回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-28 08:46 | 菠蘿大象
    @大灰狼
    童鞋,你的jQuery語法記錯了,$(this).attr("src","/wscm/login/authImg.jsp?now="+new Date());  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-29 10:00 | 大灰狼
    多謝你的指點,看來還是對jquery不熟悉。繼續請教個問題:
    就是我的登錄后的主頁面用了framset框架,如下所示:
    <FRAMESET id="frame1" border=0 frameSpacing=0 rows=50,*,20 frameBorder=NO cols=*>
    <FRAME id="top" src="<%=path%>/main/top.jsp" frameBorder=0 noResize scrolling=no />
    <FRAMESET id="frame2" border=0 frameSpacing=0 rows=* frameBorder=NO cols=200,*>
    <FRAME id="menu" src="<%=path%>/main/menu.jsp" frameBorder=0 noResize />
    <FRAME id="table" src="<%=path%>/main/table.jsp" frameBorder=0 />
    </FRAMESET>
    <FRAME id="bottom" src="<%=path%>/main/bottom.jsp" frameBorder=0 noResize scrolling=no />
    其中的四個頁面處于同級目錄下,我在main目錄下有三個子目錄:css,js,pic,我在top.jsp引用了main/js/下的那個top.js文件,里面全部采用jquery,如下:$(document).ready(function(){
    alert("你好");}
    );但是當我登錄成功后并沒有觸發這個alert事件,我把鼠標指到頂部的位置刷新的時候,才能觸發alert事件。這是為什么?
    如果不采用引入的js文件,而是直接把jquery的代碼寫到top.jsp文件中就可以了,登錄的時候直接彈出了alert事件,再用再單獨的刷新它。為什么引入一個單獨的js文件卻不行呢,是不是因為采用了framset的原因呢?  回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-30 10:56 | 菠蘿大象
    @大灰狼
    這個問題我不好回答,視情況而定,只能建議你檢查下這些文件的引用路徑對不對,很多時候是路徑問題。另外建議你使用標準的語法規則,所有屬性都加雙引號,每個標簽都要有結束標簽。  回復  更多評論
      
    # re: jQuery學習總結(三)[未登錄] 2010-05-31 17:31 | 大灰狼
    請教個問題
    如題,我登錄后的頁面應用了framset框架,左側是一個導航菜單,想根據登錄用戶的權限不同而展示不同的菜單,表結構如下:CREATE TABLE [dbo].[menus](
    [orderid] [nchar](10) NOT NULL,
    [menuid] [nchar](10) NOT NULL,
    [menuname] [nchar](30) NOT NULL,
    [Parentid] [nchar](10) NULL,
    [Css] [nchar](100) NULL,
    [url] [nchar](100) NULL,
    CONSTRAINT [PK_menus] PRIMARY KEY CLUSTERED
    (
    [menuid] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    表內容如下:
    1 00001 AAAA 00000 NULL NULL
    2 00002 BBBB 00001 NULL /lhcl.jsp
    3 00003 CCCC 00000 NULL NULL
    4 00004 DDDD 00003 NULL NULL
    5 00005 EEEE 00004 NULL NULL
    6 00006 FFFF 00005 NULL /a.jsp
    7 00007 GGGG 00000 NULL NULL
    如何利用jaquery,用ul,li的形式展現出來,另外上述就是一個用戶的所有菜單,這個我已經采用ajax+json獲取@菠蘿大象
      回復  更多評論
      
    # re: jQuery學習總結(三) 2010-05-31 17:39 | 菠蘿大象
    @大灰狼
    現在討論的東西越說越遠了,還是就本文的內容討論吧,大象我的精力有限,不能一一回答你的其它問題,這些都超出本文范圍了,請你自己解決吧,抱歉!  回復  更多評論
      
    主站蜘蛛池模板: 国产一级一毛免费黄片| 亚洲最大激情中文字幕| 久久久久国产精品免费网站| 亚洲日韩AV一区二区三区中文 | 亚洲精品无码MV在线观看| 免费高清在线爱做视频| 亚洲毛片免费视频| 西西人体免费视频| 伊人久久国产免费观看视频| 亚洲精品伦理熟女国产一区二区 | 免费在线看污视频| 一级毛片大全免费播放| 亚洲AⅤ男人的天堂在线观看| 精品日韩亚洲AV无码| 国产亚洲av片在线观看播放| 亚洲精品tv久久久久| 免费无码黄动漫在线观看| 无码一区二区三区AV免费| 亚洲黄色免费观看| 人妻无码久久一区二区三区免费 | 中文字幕在线亚洲精品| 亚洲乱码中文字幕手机在线| 免费人成无码大片在线观看| 全免费a级毛片免费看不卡| 在线免费观看一区二区三区| 三年片在线观看免费大全| 日韩中文字幕精品免费一区| 在线a免费观看最新网站| 8090在线观看免费观看| 8x8×在线永久免费视频| 亚洲视频免费在线观看| 香蕉成人免费看片视频app下载| 免费萌白酱国产一区二区三区| 国产中文字幕在线免费观看| 视频免费在线观看| 久久午夜无码免费| 7723日本高清完整版免费| 特级做A爰片毛片免费69| 成年女人毛片免费视频| 日本免费一区二区三区最新| 国产一精品一aⅴ一免费|