jQuery選擇器_Dom操作_樣式_事件處理_動(dòng)畫(huà)

JQuery是什么?

jQuery就是javascript的一個(gè)庫(kù),把我們常用的一些功能進(jìn)行了封裝,方便我們來(lái)調(diào)用,提高我們的開(kāi)發(fā)效率,極大地簡(jiǎn)化了 JavaScript 編程。

Javascipt跟jQuery的區(qū)別:

Javascript是一門(mén)編程語(yǔ)言,我們用它來(lái)編寫(xiě)客戶端瀏覽器腳本。
jQuery是javascript的一個(gè)庫(kù),包含多個(gè)可重用的函數(shù),用來(lái)輔助我們簡(jiǎn)化javascript開(kāi)發(fā)
jQuery能做的javascipt都能做到,而javascript能做的事情,jQuery不一定能做到。

jQuery 能做什么?

  • 方便快捷獲取DOM元素
  • 動(dòng)態(tài)修改頁(yè)面樣式
  • 動(dòng)態(tài)改變DOM內(nèi)容
  • 元素的操作:取值、賦值、移動(dòng)、復(fù)制、刪除和創(chuàng)建
  • 響應(yīng)用戶的交互操作
  • 為頁(yè)面添加動(dòng)態(tài)效果
  • 統(tǒng)一Ajax操作
  • 簡(jiǎn)化常見(jiàn)的JavaScript任務(wù)

jQuery版本問(wèn)題

  • 1.x:兼容ie678,使用最為廣泛的,體積大,官方只做BUG維護(hù),功能不再新增。因此一般項(xiàng)目來(lái)說(shuō),使用1.x版本就可以了,最終版本:1.12.4 (2016年5月20日)
  • 2.x:不兼容ie678,很少有人使用,體積小,官方只做BUG維護(hù),功能不再新增。如果不考慮兼容低版本的瀏覽器可以使用2.x,最終版本:2.2.4 (2016年5月20日)
  • 3.x:不兼容ie678,只支持最新的瀏覽器。除非特殊要求,一般不會(huì)使用3.x版本的,很多老的jQuery插件不支持這個(gè)版本。目前該版本是官方主要更新維護(hù)的版本。

jQuery 對(duì)象和 DOM 原生對(duì)象有什么區(qū)別?如何轉(zhuǎn)化?

什么是DOM原生對(duì)象:
  • DOM實(shí)際上是以面向?qū)ο蠓绞矫枋龅奈臋n模型。
  • DOM定義了表示和修改文檔所需的對(duì)象、這些對(duì)象的行為和屬性以及這些對(duì)象之間的關(guān)系。
  • 根據(jù)W3C DOM規(guī)范,DOM是HTML與XML的應(yīng)用編程接口(API)。
  • 通過(guò) DOM,可以訪問(wèn)所有的 HTML 元素,連同它們所包含的文本和屬性。可以對(duì)其中的內(nèi)容進(jìn)行修改和刪除,同時(shí)也可以創(chuàng)建新的元素。HTML DOM 獨(dú)立于平臺(tái)和編程語(yǔ)言它可被任何編程語(yǔ)言諸如 Java、JavaScript 和 VBScript 使用。
  • DOM對(duì)象即是我們用傳統(tǒng)的方法(javascript)獲得的對(duì)象。
什么是jQuery對(duì)象:
  • jquery對(duì)象其實(shí)是一個(gè)javascript的數(shù)組
  • 這個(gè)數(shù)組對(duì)象包含125個(gè)方法4個(gè)屬性
  • 4個(gè)屬性分別是
    • jquery 當(dāng)前的jquery框架版本號(hào)
    • length 指示該數(shù)組對(duì)象的元素個(gè)數(shù)
    • context 一般情況下都是指向HtmlDocument對(duì)象
    • selector 傳遞進(jìn)來(lái)的選擇器內(nèi)容 如:#yourId或.yourClass等

簡(jiǎn)單理解,就是jQuery對(duì)象就是通過(guò)jQuery包裝DOM對(duì)象后產(chǎn)生的對(duì)象。jQuery對(duì)象是jQuery獨(dú)有的,其可以使用jQuery里的方法,但是不能使用DOM的方法;同理,原生JS需要使用原生JS對(duì)象的屬性和方法。

如何轉(zhuǎn)化?

<div id = "container">
    <ul>
        <li>1</li>
        <li class="active">2</li>
        <li>3</li>
    </ul>
</div>

【jQuery對(duì)象轉(zhuǎn)DOM對(duì)象】jQuery對(duì)象是一個(gè)類(lèi)數(shù)組對(duì)象,可以通過(guò)[index]的方法得到相應(yīng)的DOM對(duì)象。

$('#container li') ==> [li,li.active,li]
//jQuery對(duì)象
$('#container li')[0] ==> <li>1</li>
//jQuery對(duì)象轉(zhuǎn)DOM原生對(duì)象

【jQuery對(duì)象轉(zhuǎn)DOM對(duì)象】jQuery本身提供,通過(guò).get(index)方法,得到相應(yīng)的DOM對(duì)象。

$('#container li') ==> [li,li.active,li]
//jQuery對(duì)象
$('#container li').get(0) ==> <li>1</li>
//jQuery對(duì)象轉(zhuǎn)DOM原生對(duì)象 注意:這里是() 

【DOM對(duì)象轉(zhuǎn)jQuery對(duì)象】對(duì)于一個(gè)DOM對(duì)象,只需要用$()把DOM對(duì)象包裝起來(lái),就可以獲得一個(gè)jQuery對(duì)象了,方式為$(DOM對(duì)象)。

document.querySelector('.active') ==> <li class="active">2</li>  
//DOM對(duì)象
$(document.querySelector('.active')) ==> [li.active] 
//DOM對(duì)象轉(zhuǎn)jQuery對(duì)象

jQuery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫(xiě)法?

bing()

描述:為一個(gè)元素綁定事件處理程序。

一個(gè)基本的用法:

$('#foo').bind('click', function() {
  alert('User clicked on "foo."');
});
//使元素ID為foo響應(yīng)click事件。當(dāng)在用戶點(diǎn)擊這個(gè)元素之后,警報(bào)將顯示。

多個(gè)事件:

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});
//在<div id="foo">(當(dāng)最初它不會(huì)有"entered"樣式類(lèi)時(shí))上的這個(gè)效果是
//當(dāng)鼠標(biāo)進(jìn)入<div>時(shí),增加"entered"樣式類(lèi),鼠標(biāo)離開(kāi)時(shí)移除這個(gè)樣式類(lèi)

注意:在jQuery 3.0中,.bind()已被標(biāo)記為棄用。從jQuery 1.7開(kāi)始,.on() 方法是將事件處理程序綁定到文檔(document)的首選方法。
.bind()中文API

unbind()

描述:從元素上刪除一個(gè)以前附加事件處理程序。

不帶參數(shù)的.unbind() 將移除元素上所有綁定的處理程序:

  $('#foo').unbind();
  //移除#foo元素的所有事件

為了更加精確,我們可以傳遞一個(gè)事件類(lèi)型:

  $('#foo').unbind('click');
  //刪除#foo元素的點(diǎn)擊事件

注:在jQuery 3.0中,.unbind()已被標(biāo)記為棄用。從jQuery 1.7開(kāi)始,它已經(jīng)被.off()方法取代。
.unbind()中文API

delegate()

描述:為所有匹配選擇器(selector參數(shù))的元素綁定一個(gè)或多個(gè)事件處理函數(shù),基于一個(gè)指定的根元素的子集,匹配的元素包括那些目前已經(jīng)匹配到的元素,也包括那些今后可能匹配到的元素。

  $("table").delegate("td", "click", function() {
    $(this).toggleClass("chosen");
  });
  //給table下面的所有td綁定事件代理,用戶點(diǎn)擊時(shí),移除/增加class:chosen

live

將委托的事件處理程序附加到一個(gè)頁(yè)面的document元素,從而簡(jiǎn)化了在頁(yè)面上動(dòng)態(tài)添加的內(nèi)容上事件處理的使用。
直接給元素綁定時(shí)間代理。

  $('a').live('click',function(){
      alert('That tickles!')
  })

注:從jQuery1.7開(kāi)始, .live() 方法已經(jīng)過(guò)時(shí)了。請(qǐng)使用.on()
附加事件處理程序。 舊版本的jQuery中用戶,應(yīng)優(yōu)先使用.delegate()來(lái)取代.live()。

on

.on( events [, selector ] [, data ], handler(eventObject) )
  • events:一個(gè)或多個(gè)空格分隔的事件類(lèi)型和可選的命名空間,或僅僅是命名空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
  • selector:一個(gè)選擇器字符串,用于過(guò)濾出被選中的元素中能觸發(fā)事件的后代元素。如果選擇器是 null 或者忽略了該選擇器,那么被選中的元素總是能觸發(fā)事件。
  • data當(dāng)一個(gè)事件被觸發(fā)時(shí),要傳遞給事件處理函數(shù)的event.data
  • handler(eventObject)事件被觸發(fā)時(shí),執(zhí)行的函數(shù)。若該函數(shù)只是要執(zhí)行return false的話,那么該參數(shù)位置可以直接簡(jiǎn)寫(xiě)成 false。

.on()方法提供綁定事件處理的所有功能。包括.bind().delegate()、.live()

  //普通事件綁定,最簡(jiǎn)單的用法
  $('#div').on('click',function(e){
    console.log(this)
    //輸出當(dāng)前點(diǎn)擊的元素
  })
  //事件委托或事件代理,想讓div下面所有的span綁定事件,可以把事件綁定在div上
  $('#div').on('click','span',function(e){
    console.log(this)
  })
  //可以給綁定的時(shí)候給事件處理程序傳遞一些參數(shù)
  $('#div').on('click',{name:'張三',age:'18'},function(e){
    console.log(e.data)
  })

舉例

  <div class="box">
    <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
    </ul>
    <input id="ipt" type="text">
    <button id="btn">添加</button>
    <div id="warp">這里是warp</div>
  </div>
HTML效果
  //為li添加點(diǎn)擊事件
  $('.box>ul>li').on('click',function(){
    var str = $(this).text()
    $('#wrap').text(str) //替換#wrap的文本內(nèi)容
  })

缺點(diǎn):后來(lái)添加的li沒(méi)有綁定事件,點(diǎn)擊li不會(huì)在warp內(nèi)顯示文本

  // 有綁定事件(給父級(jí)元素綁定事件)
  $('.box>ul').on('click','li',function(){
    var str = $(this).text()
    $('#warp').text(str)
  })
  //在input輸入內(nèi)容,生成li添加到ul中
  $('#btn').on('click',function(){
    var value = $('#ipt').val() //獲取ipt的value值
    $('.box>ul').append('<li>+value+</li>')
    //在ul中添加
  })  

off()

描述:方法移除用.on()綁定的事件處理程序。

  //移除所有段落上的事件
  $("p").off()
  //移除所有段落上的代理事件
  $("p").off("click","**")
  //通過(guò)傳入的第三個(gè)參數(shù),僅移除先前綁定的事件處理函數(shù)
  var foo = function(){
      xxx
  }
  //添加事件處理函數(shù)
  $("body").on("click","p",foo);
  //移除事件處理函數(shù)
  $("body").off("click","p",foo);

標(biāo)記命名空間
為了方便移除事件

  $('.box>ul').on('click.hello','li',function(){ hello
    xxx 
  })
  //標(biāo)記一個(gè)click,命名為hello
 
  //移除這個(gè)命名標(biāo)記
  $('.box>ul').off('click.hello')

推薦使用哪種?

事件處理中最頭疼的就是瀏覽器兼容問(wèn)題,jQuery封裝了很好的API,可以方便的進(jìn)行事件處理,在1.7之前的版本中jQuery處理事件有很多個(gè)辦法,作用各不相同,后來(lái)統(tǒng)一的使用on/off方法。

使用on綁定事件使用事件代理的寫(xiě)法?

普通綁定事件:$('.btn').click(function(){}綁定

on綁定事件:$(document).on('click','.btn',function(){}綁定

jQuery 如何展示/隱藏元素?

原生js

  node.style.display = "none/block"

jQuery .css相關(guān)

  $('.hunger').css('display','none')  //隱藏
  $('.hunger').css('display','block')  //展示

基礎(chǔ)

.hide([duration][,sasing][,complete])/.show([duration][,sasing][,complete])

用于隱藏/展示元素,沒(méi)有參數(shù)的時(shí)候等于直接設(shè)置display屬性

  • duration:動(dòng)畫(huà)持續(xù)時(shí)間,毫秒單位
  • easing:表示過(guò)渡使用哪種緩動(dòng)函數(shù),jQuery自身提供‘linear’‘swing’(其他可以使用相關(guān)插件)
    • linear 在開(kāi)頭/結(jié)尾移動(dòng)慢,在中間移動(dòng)快
    • swing 勻速移動(dòng)
  • complete:在動(dòng)畫(huà)完成時(shí)執(zhí)行的函數(shù)
  $('.hunger').hide() 隱藏
  $('.hunger').show() 展示
  $('.hunger').hide(1000) 一秒的隱藏動(dòng)畫(huà)
  $('.hunger').show(1000) 一秒的展示動(dòng)畫(huà) 
.toggle([duration][,easing][,complete])

用來(lái)切換元素的隱藏、顯示


漸變

.fadeIn/.fadeOut([duration][,easing][,complete])

淡入的方式顯示匹配元素/淡出的方式隱藏匹配元素

  $('#btn-box1').on('click',function(){
      $('.box').fadeIn()  //淡入顯示
  })
  $('#btn-box2').on('click',function(){
      $('.box').fadeOut()  //淡出隱藏
  })
.fadeTo(duration,opcity[,easing][,complete])

調(diào)整匹配元素的透明度,方法通過(guò)匹配元素的不透明度做動(dòng)畫(huà)效果

  $('#book').fadeTo('slow',0)
  //slow 600毫秒 opcity=0 ==> 隱藏
  $('#book').fadeTo('slow',1)
  // opcity = 1 ==> 展示
.fadeToggle([duration][,easing][,complete])

通過(guò)匹配的元素的不透明度動(dòng)畫(huà),來(lái)顯示或隱藏他們,方便執(zhí)行匹配元素的不透明度動(dòng)畫(huà),當(dāng)被可見(jiàn)元素調(diào)用時(shí),元素不透明度一旦達(dá)到0,display樣式屬性設(shè)置為none,所以元素不在影響頁(yè)面的布局

  $("button:first").click(function(){
    $("p:first").fadeToggle("slow","linear");
    // 漸隱或漸顯,用時(shí) 600 毫秒,并且是線性緩沖效果。
  })

滑動(dòng)

.slideDown/.slideUp([duration][,easing][,complete])

向下滑動(dòng)顯示一個(gè)匹配元素/向上滑動(dòng)顯示一個(gè)匹配元素

  $(selector).on('click',function(){
    $('.box').slideDown('slow')
    //向下滑動(dòng)出現(xiàn)
  })
------------------------------------
  $(selector).on('click',function(){
    $('.box').slideUp('slow')
    //向上滑動(dòng)出現(xiàn)
  })
  

自定義

.animate(properties[,duration][,easing][,complete])

更復(fù)雜的動(dòng)畫(huà)

  • properties是一個(gè)css屬性和值的對(duì)象,動(dòng)畫(huà)將根據(jù)這組對(duì)象移動(dòng)
  $('.btnHide').click(function(){
    $('#book').animate({
        opacity:0;
      },1000)
  })
  //點(diǎn)擊 一秒時(shí)間隱藏

  $('.btnShow').click(function(){
    $('#book').animate({
        opacity:1;
      },1000)
  })
  //點(diǎn)擊 一秒時(shí)間顯示

補(bǔ)充 動(dòng)畫(huà)持續(xù)參數(shù)

  • 數(shù)字毫秒
  • fast(200毫秒)
  • normal(400毫秒)
  • slow(600毫秒)

jQuery 動(dòng)畫(huà)如何使用?

  • 顯示/隱藏
    • show() 顯示
    • hide() 隱藏
    • toggle() 切換顯示/隱藏
  • 漸變
    • fadeIn() 淡入的方式顯示匹配元素
    • fadeOut() 淡出的方式隱藏匹配元素
    • fadeTo() 調(diào)整匹配元素的透明度
    • fadeToggle() 通過(guò)不透明度,切換顯示/隱藏元素
  • 滑動(dòng)
    • slideDown() 向下滑動(dòng)顯示
    • slideUp() 向上滑動(dòng)隱藏
  • 自定義(更復(fù)雜的動(dòng)畫(huà))
    • .animate(properties[,duration][,easing][,complete])
      • properties一個(gè)CSS屬性和值的對(duì)象,動(dòng)畫(huà)將根據(jù)這組對(duì)象移動(dòng)。
      • duration (默認(rèn): 400):一個(gè)字符串或者數(shù)字決定動(dòng)畫(huà)將運(yùn)行多久。(愚人碼頭注:默認(rèn)值: "normal", 三種預(yù)定速度的字符串("slow", "normal", 或 "fast")或表示動(dòng)畫(huà)時(shí)長(zhǎng)的毫秒數(shù)值(如:1000) )
      • easing (默認(rèn): swing):一個(gè)字符串,表示過(guò)渡使用哪種緩動(dòng)函數(shù)。(注:jQuery自身提供"linear" 和 "swing")
      • complete:在動(dòng)畫(huà)完成時(shí)執(zhí)行的函數(shù)。
animate實(shí)例:

animate實(shí)例:

  //點(diǎn)擊按鈕后div元素的幾個(gè)不同屬性一同變化
  $("#go").click(function () {
    $("#block").animate({
        width: "90%",
        height: "100%",
        fontSize: "10em",
        borderWidth: 10
    }, 1000);
});
  //讓指定元素左右移動(dòng)
  $("#right").click(function () {
    $(".block").animate({ left: '+50px' }, "slow");
  });
  $("#left").click(function () {
    $(".block").animate({ left: '-50px' }, "slow");
  });
  //在600毫秒內(nèi)切換段落的高度和透明度
  $("p").animate({
    height: 'toggle', opacity: 'toggle'
  }, "slow");
 //用500毫秒將段落移到left為50的地方并且完全清晰顯示出來(lái)(透明度為1)
  $("p").animate({
    left: 50, opacity: 'show'
  }, 500);
  //切換顯示隱藏
  $(".box h3").toggle(function(){
    $(this).next(".text").animate({height: 'toggle', opacity: 'toggle'},"slow");
    $(this).addClass("arrow");
    return false;
   },function(){
      $(this).next(".text").animate({height: 'toggle', opacity: 'toggle'}, "slow");
      $(this).removeClass("arrow");
      return false;
    });
  });
  //滾動(dòng)焦點(diǎn)
  $(window).scroll(function () {              //當(dāng)前窗口的滾動(dòng)事件
    var winTop = $(window).scrollTop();     //獲取當(dāng)前窗口的大小
    var objTop = $("#obj1").offset().top;   //獲取當(dāng)前對(duì)象的x坐標(biāo)
  });

如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本?

設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容

.html([string])

描述:此方法類(lèi)似于JavaScript中的innerHTML屬性,可以用來(lái)讀取或者設(shè)置某個(gè)元素中的HTML內(nèi)容。

  • 當(dāng)用戶沒(méi)有傳遞參數(shù)的時(shí)候,返回元素的innerHTML
  • 當(dāng)用戶傳遞了一個(gè)string參數(shù)的時(shí)候,修改元素的innerHTML為參數(shù)值。
  <div id = "container">
    <ul>
      <li>1</li>
      <li class="active"><strong>2</strong></li>
      <li>3</li>
    </ul>
  </div>
  $('#container .active').html() ==> <p>2</p> //也會(huì)獲取HTML
  $('#container .active').html('<i>2</I>')  
  ==> <strong>2</strong>替換為<i>2</i> 

注意:html()方法可以用于XHTML文檔,但不能用于XML文檔。

設(shè)置和獲取元素內(nèi)部文本

.text()

描述:此方法類(lèi)似于JavaScript中的innerText屬性,可以用來(lái)讀取或者沒(méi)置某個(gè)元素中的文本內(nèi)容。

  • 當(dāng)用戶沒(méi)有傳遞參數(shù)的時(shí)候,返回元素的innerText
  • 當(dāng)用戶傳遞了一個(gè)string參數(shù)的時(shí)候,修改元素的innerText為參數(shù)值。


  $('#container .active').text() //獲取文本內(nèi)容
  $('#container .active').text('<i>2</i>')

如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性?

.val([value])

  • 不加參數(shù)用于獲取表單元素的值,如input, select 和 textarea。
  • 含有參數(shù),參數(shù)內(nèi)容包含一個(gè)文本字符串,一個(gè)數(shù)字,或一個(gè)以字符串形式的數(shù)組來(lái)設(shè)定每個(gè)匹配元素的值。
  <input id="ipt1" type="text" value="hello">
  $('#ipt1').val() //獲取ipt.value的值
  $('#ipt1').val('hello wrold')  換掉里面的值
  $('#ipt1')[0].value="123" 原生DOM設(shè)置

.attr(attributeName)
獲取/設(shè)置值和屬性

  <input id="ipt1" type="text" value="123" sex="男">
  $('#ipt1').attr('type')  ==> text //獲取值
  $('#ipt1').attr('type','checkbox')  //把type值設(shè)置為checkbox
  $('#ipt1').attr('id')  ==> //獲取值ipt1
  $('#ipt1').attr({class:"sexInput",title:value:"456"}) //設(shè)置多個(gè)值

使用 jQuery實(shí)現(xiàn)如下效果

我的實(shí)例


使用 jQuery 實(shí)現(xiàn)如下效果

我的實(shí)例


實(shí)現(xiàn)如下效果

我的實(shí)例

router.js

app.get('/getProducts',function(req,res){
    var products = [
        {
            img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/144654628
                  4/374195/9196ac66/56af0958N1a723458.jpg',
            name: '珂蘭 黃金手 猴哥款',
            price: '¥405.00'
        },{
            img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/144654628
                  4/374195/9196ac66/56af0958N1a723458.jpg',
            name: '珂蘭 黃金轉(zhuǎn)運(yùn)珠 猴哥款',
            price: '¥100.00'
        },{
            img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/144654628
                  4/374195/9196ac66/56af0958N1a723458.jpg',
            name: '珂蘭 黃金手鏈 3D猴哥款',
            price: '¥45.00'
        },
        
    ]
    var retProducts=products;
    res.send({
        status: 0,
        data: retProducts
    })
})

Ps:當(dāng)點(diǎn)擊按鈕時(shí)使用如下數(shù)據(jù)

var products = [
    {
        img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/144654628
              4/374195/9196ac66/56af0958N1a723458.jpg',
        name: '珂蘭 黃金手 猴哥款',
        price: '¥405.00'
    },{
        img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/144654628
              4/374195/9196ac66/56af0958N1a723458.jpg',
        name: '珂蘭 黃金轉(zhuǎn)運(yùn)珠 猴哥款',
        price: '¥100.00'
    },{
        img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/144654628
              4/374195/9196ac66/56af0958N1a723458.jpg',
        name: '珂蘭 黃金手鏈 3D猴哥款',
        price: '¥45.00'
    }
左右切換的Tab效果
上下滑動(dòng)Tab切換

參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容