jQuery

jQuery 是 Javascript 的一個(gè)庫,官方網(wǎng)站是 jQuery 蚂会。

jQuery 的好處:

  • 兼容性好
  • API 友好
  • 需要兼容多款瀏覽器

什么時(shí)候用 jQuery

  • DOM 操作較多
  • 簡(jiǎn)單的AJXA
  • 需要兼容多款瀏覽器

什么時(shí)候不用 jQuery

  • 頁面交互加大
  • 頁面對(duì)流量有苛刻的要求
  • 團(tuán)隊(duì)已經(jīng)有 jQuery 代替品

jQuery 版本問題

1.x 和 2.x問題淋样,1.x兼容性更好,2.x性能更好胁住,兼容性相對(duì)較差趁猴。

jQuery 的兩種API

$.noConflict()
$.each()
$('ul').addClass();
$('p').text('h1')

jQuery 選擇器

引入 jQuery

<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

常見的 jQuery 選擇器,與 CSS3 選擇器類似

  • 基本選擇器
    $('*') 匹配所有元素
    $('#id') 匹配 id 選擇器
    $('.class') 匹配類選擇器
    $('element') 匹配元素選擇器

  • .eq
    指定 index 的 jQuery 對(duì)象

$('div').eq(2)  // index 為 2 的 div 元素
  • .next / .prev
    前一個(gè)或者下一個(gè)元素
$('.panel').next()  // 第一個(gè)類名為 panel 的下一個(gè)元素
$('.panel').prev()  // 第一個(gè)類名為 panel 的上一個(gè)元素
  • .nextAll / .prevAll
    nextAll獲得每個(gè)匹配元素集合中每個(gè)元素所有后面的同輩元素彪见,選擇性篩選的選擇器儡司,prevAll與之相反,獲取元素前面的同輩元素
$('.panel').nextAll()  // 類名為 panel 的所有后面的同輩元素
$('.panel').prevAll()  // 類名為 panel 的所有前面的同輩元素
  • .siblings
    獲得匹配元素中的所有兄弟元素余指,可以二次篩選
$('.panel').siblings('.active')  // 類名為 panel 的兄弟元素中類名為 active 的元素
  • .parent / .parents
    取得匹配元素集合中捕犬,每個(gè)元素的父元素,可以提供一個(gè)可選的選擇器酵镜;
    獲得集合中每個(gè)匹配元素的祖先元素碉碉,可以提供一個(gè)可選的選擇器作為參數(shù)
$('li.item').parent()  // li 元素中類名為 item 的元素的父元素
$('li.item').parents()  // li 元素中類名為 item 的元素的所有祖先元素
  • .children / .find
    獲得匹配元素集合中每個(gè)元素的子元素,選擇器選擇性篩選
    查找符合選擇器的后代元素
$('ul.level-2').children()  // 類名為 level-2 的 ul 元素的子元素
$('ul').find('li.current');  // ul 元素后代中類名為 current 的 li 元素
  • .filter
    篩選當(dāng)前結(jié)果集中符合條件的對(duì)象淮韭,參數(shù)可以是一個(gè)選擇器或者一個(gè)函數(shù)
$('div.tab').fliter('.active')  //  類名為 tab 的 div 元素中具有 active 類的元素

.has
篩選匹配元素集合中的那些有相匹配的選擇器或DOM元素的后代元素

$('.content').has('.active')  // 類名為 content 的元素中具有 active 類的元素
  • .is
    判斷當(dāng)前匹配的元素集合中的元素垢粮,是否為一個(gè)選擇器,DOM元素靠粪,或者jQuery對(duì)象蜡吧,如果這些元素至少一個(gè)匹配給定的參數(shù),那么返回true
if ( $target.is("li") ) {
  $target.css("background-color", "red");
}  // 如果選擇的 target 對(duì)象是 li 元素庇配,則修改 CSS斩跌。

用jQuery實(shí)現(xiàn)一個(gè) tab 切換

首先畫四個(gè) tab ,分別是 1捞慌,2耀鸦,3,4.每個(gè)對(duì)應(yīng)一個(gè) panel,one,two,three, four,點(diǎn)擊不同的tab時(shí)袖订,tab會(huì)有被點(diǎn)擊的反饋氮帐,相應(yīng)的英文單詞也會(huì)改變。

html , CSS 如下

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Tab change</title>
  <style>
    .clear:after {
      content:'';
      clear:both;
      display:block;
    }
    .tab {
      float:left;
      background: #ccc;
      padding: 5px 30px;
      border-left:1px solid #aaa;  
      border-top:1px solid #aaa;
    }
    .tab:last-child {
      border-right:1px solid #aaa;
    }
    .tab:hover {
      cursor: pointer;
    }
    .header .active {
      background: #fff;
    }
    .content {
      margin-bottom: 50px;
    }
    .panel {
      display: none;
      width:70%;
      border:1px #ccc solid;
      background: #fff;
      padding: 50px 20px;
    }
    .panel.active {
      display: block;
    }
  </style>
</head>
<body>
  <div class="mod-tab">
    <div class="header clear">
      <div class="tab active">1</div>
      <div class="tab">2</div>
      <div class="tab">3</div>
      <div class="tab">4</div>
    </div>
    
    <div class="content">
      <div class="panel active">one</div>
      <div class="panel">two</div>
      <div class="panel">three</div>
      <div class="panel">four</div>
    </div>
  </div>
  <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
</body>
</html>

jQuery 如下

$('.mod-tab .tab').on('click', function() {
  // tab change
  $(this).siblings().removeClass('active');
  $(this).addClass('active');
  
  // panel change 
  $(this).parents('.mod-tab').find('.panel')
         .eq($(this).index()).addClass('active')
          .siblings().removeClass('active');
});

原生 JS 如下

document.querySelector('.header').addEventListener('click', function(e){
  var tabItem = document.querySelector('.active');
  var contentItem = document.querySelector('.content');
  var currentIndex = 0;

  // tab change
  if(tabItem.classList.contains('tab')){
    tabItem.classList.remove('active');
    e.target.classList.add('active');
  }

  // panel change
  if(e.target.classList.contains('tab')){
    for(var i=0;i<this.children.length;i++){
      if(this.children[i] === e.target)
        currentIndex = i;
    }
    document.querySelectorAll('.active')[1].classList.remove('active');
    contentItem.children[currentIndex].classList.add('active');
 }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洛姑,一起剝皮案震驚了整個(gè)濱河市上沐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楞艾,老刑警劉巖参咙,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異硫眯,居然都是意外死亡蕴侧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門两入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來净宵,“玉大人,你說我怎么就攤上這事裹纳≡衿希” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵剃氧,是天一觀的道長(zhǎng)敏储。 經(jīng)常有香客問我,道長(zhǎng)她我,這世上最難降的妖魔是什么虹曙? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮番舆,結(jié)果婚禮上酝碳,老公的妹妹穿的比我還像新娘。我一直安慰自己恨狈,他們只是感情好疏哗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禾怠,像睡著了一般返奉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吗氏,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天芽偏,我揣著相機(jī)與錄音,去河邊找鬼弦讽。 笑死污尉,一個(gè)胖子當(dāng)著我的面吹牛膀哲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播被碗,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼某宪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了锐朴?” 一聲冷哼從身側(cè)響起兴喂,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焚志,沒想到半個(gè)月后衣迷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娩嚼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年蘑险,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岳悟。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泼差,靈堂內(nèi)的尸體忽然破棺而出贵少,到底是詐尸還是另有隱情,我是刑警寧澤堆缘,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布滔灶,位于F島的核電站,受9級(jí)特大地震影響吼肥,放射性物質(zhì)發(fā)生泄漏录平。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一缀皱、第九天 我趴在偏房一處隱蔽的房頂上張望斗这。 院中可真熱鬧,春花似錦啤斗、人聲如沸表箭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽免钻。三九已至,卻和暖如春崔拥,著一層夾襖步出監(jiān)牢的瞬間极舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工链瓦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拆魏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像稽揭,于是被迫代替她去往敵國和親俺附。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一溪掀、樣式篇 第1章 初識(shí)jQuery (1)環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,390評(píng)論 0 44
  • 第一章 jQuery簡(jiǎn)介 1-1 jQuery簡(jiǎn)介 1.簡(jiǎn)介 2.優(yōu)勢(shì) 3.特性與工具方法 1-2 環(huán)境搭建 進(jìn)入...
    mo默22閱讀 1,587評(píng)論 0 11
  • jQuery基礎(chǔ)(一)——樣式篇 1-2環(huán)境搭建 1-3 jQuery HelloWorld體驗(yàn) $(docume...
    croyance0601閱讀 1,083評(píng)論 0 8
  • 環(huán)境搭建 進(jìn)入官方網(wǎng)站獲取最新的版本 http://jquery.com/download/ 事镣,這里需要注意 j...
    阿r阿r閱讀 799評(píng)論 0 7
  • DOM創(chuàng)建節(jié)點(diǎn)及節(jié)點(diǎn)屬性 通過JavaScript可以很方便的獲取DOM節(jié)點(diǎn),從而進(jìn)行一系列的DOM操作揪胃。但實(shí)際上...
    阿r阿r閱讀 1,020評(píng)論 0 9