1. 程式人生 > 實用技巧 >JQuery學習(一)

JQuery學習(一)

內容概覽

  1. JQuery的初步認識
  2. JQuery的選擇器
  3. JQuery的過濾器

一、JQuery的初步認識

1.1 JQuery概念

  • 一個JavaScript框架。本質上就是一些js檔案,封裝了js的原生程式碼而已。簡化JS開發。

1.2 JQuery能做什麼

  • javascript用來幹什麼的:
    • 操作DOM物件
    • 動態操作樣式css
    • 資料訪問
    • 控制響應事件
  • jquery作用一樣,但是更加快速簡潔。

1.3 jquery有哪些功能(API)

  • 選擇器
  • 過濾器
  • 事件
  • 動畫效果
  • ajax

1.4 如何引用jquery

  • 引入本地jquery: <script type="text/javascript" src="jquery.js">

  • 引入Google線上提供的庫檔案(穩定可靠高速)

  • 寫第一個JQUery案例

    • 解釋:在JQuery庫中,'$()'等效於就jQuery()

      //引入jquery檔案
      <script type=“text/javascript” src=“”></script>
      //在html頁面編寫jq
      <script type=“text/javascript”>
         $(function(){
             alert(“jQuery 你好!”);
         });
      </script>
      

1.5 講解$(function(){})

  • ‘$’是jQuery的別名,如‘$()'也可寫作jQuery(),相當於頁面初始化函式,當頁面載入完畢,會執行jQuery()。
  • JQuery操作DOM文件時,必須確保DOM已經載入完畢,此時就需要用到JQuery的ready事件。
  • $(document).ready(function(){})即$(function(){})
    • 類似於js的window.onload事件函式,但是ready事件要先於onload事件執行
    • window.onload = function(){};
  • 為方便開發,jQuery簡化這樣的方法,直接用$()表示
  • JQuery的ready事件不等於Js的load:
    • 執行時機不同:load需要等外部圖片和視訊等全部載入才執行。ready是DOM繪製完畢後執行,先與外部檔案
    • 用法不同:load只可寫一次,ready可寫多次
  • window.onload與$(document).ready()對比

    window.onload $(document).ready()
    執行時機 必須等網頁中所有內容載入完後(圖片)才執行 網頁中的DOM結構繪製完後就執行,可能DOM元素相關的東西並沒有載入完
    編寫個數 不能同時執行多個 能同時執行多個
    簡化寫法 $(document).ready(function(){ //.. }); 推薦寫法:$(function(){ });

1.6 JQuery物件與JS物件的區別與轉換

  • JQuery物件在操作時,更加方便
  • JQuery物件和js物件方法部分不通用
  • 兩者相互轉換
    • jq -- > js : jq物件[索引] 或者 jq物件.get(索引)
    • js -- > jq : $(js物件)

1.8 $()講解

  • $在JQuery庫中,$是JQuery的別名,$()等效於就jQuery().
  • $()是JQuery方法,咱可看作是JQuery的選擇器,與css選擇器相似(可做對比)
  • 只要是jQuery的物件都這樣變數加上一個符號$ 方便識別:var $div = $("#")
function $(id){
        return document.getElementById(id);
    }

1.9 $和document是相等的嗎?

<div id="a" class="aa"></div>
<div id="b" class="aa"></div>
<div id="c" class="aa"></div>
alert(document.getElementById("a") == $("#a"));//返回結果為false
alert(document.getElementById("a") == $("#a").get(0));//返回true
  • 物件轉換($(element))

    • 原生dom物件和jquery代理物件的相互轉換
    $(傳入的原生物件);
    //原生物件轉化成jQuery物件
    var nav = document.getElementById("nav");
    var $nav = $(nav);
    alert($nav.get(0) == nav);//true
    

    二、選擇器

2.1 基本選擇器

  • 基本選擇器
    • id選擇器:$("#id")
    • 類選擇器:$(".classname")
    • 元素選擇器:$("div")
    • 組合選擇器:$("div,p,.classname,#id")
  • 層級選擇器:通過DOM的巢狀關係匹配元素
    • 包含選擇器:$("a b")在給定的祖先元素下匹配所有後代元素。(不受層級限制)
    • 子選擇器:$("parent > child") 在給定的父元素下匹配所有子元素。
    • 相鄰選擇器:$("prev + next") 匹配所有緊接在prev元素後的next元素。
    • 兄弟選擇器:$("prev ~ siblings") 匹配prev元素之後的所有sibling元素。

2.2 過濾選擇器

2.2.1 基本過濾選擇

$("li:first")    //第一個li
$("li:last")     //最後一個li
$("li:even")     //挑選下標為偶數的li
$("li:odd")      //挑選下標為奇數的li
$("li:eq(4)")    //下標等於 4 的li(第五個 li 元素)
$("li:gt(2)")    //下標大於 2 的li
$("li:lt(2)")    //下標小於 2 的li
$("li:not(#runoob)") //挑選除 id="runoob" 以外的所有li

2.2.2 內容過濾選擇器

$("div:contains('Runob')")    // 包含 Runob文字的元素
$("td:empty")                 //不包含子元素或者文字的空元素
$("div:has(selector)")        //含有選擇器所匹配的元素
$("td:parent")                //含有子元素或者文字的元素

2.2.3 可見過濾選擇器

$("li:hidden")       //匹配所有不可見元素,或type為hidden的元素
$("li:visible")      //匹配所有可見元素

2.2.4 屬性過濾選擇器

$("div[id]")        //所有含有 id 屬性的 div 元素
$("div[id='123']")        // id屬性值為123的div 元素
$("div[id!='123']")        // id屬性值不等於123的div 元素
$("div[id^='qq']")        // id屬性值以qq開頭的div 元素
$("div[id$='zz']")        // id屬性值以zz結尾的div 元素
$("div[id*='bb']")        // id屬性值包含bb的div 元素
$("input[id][name$='man']") //多屬性選過濾,同時滿足兩個屬性的條件的元素

2.2.5 子元素過濾選擇器

選擇器 說明 返回
:nth-child(index/even/odd) 選取每個父元素下的第index個子元素或者奇偶元素(index從1算起) 集合元素
first-child() 選取每個元素的第一個子元素 集合元素
last-child() 選取每個元素的最後一個子元素 集合元素
  • :nth-child()選擇器是很常用的子元素過濾選擇器,如下
    • :nth-child(even)選擇每個父元素下的索引值是偶數的元素
    • :nth-child(odd)選擇每個父元素下的索引值是奇數的元素
    • :nth-child(2)選擇每個父元素下的索引值是2的元素
    • :nth-child(3n)選擇每個父元素下的索引值是3的倍數的元素 (n從1開始)

2.2.6 表單物件屬性過濾選擇器

選擇器 說明 返回
$("input:enabled") 選取所有可用元素 集合元素
$("input:disabled") 選取所有不可用元素 集合元素
$("input:checked") 選取所有被選中的元素(單選框、複選框) 集合元素
$("option:selected") 選取所有被選中的元素(下拉列表) 集合元素

2.2.7 表單選擇器

選擇器 說明
$(":input") 選取所有input textarea select button元素
$(":text") 選取所有單行文字框
$(":password") 選取所有密碼框
$(":radio") 選取所有單選框
$(":checkbox") 選取所有多選框
$(:submit") 選取所有的提交按鈕
$(":image") 選取所有的影象按鈕
$(":reset") 選取所有的重置按鈕
$(":button") 選取所有的按鈕
$(":file") 選取所有的上傳域
$(":hidden") 選取所有的不可見元素

2.2.8 特定位置選擇器

  • :first
  • :last
  • eq(index)

2.2.9 指定範圍選擇器

  • :even
  • :odd
  • :gt(index)
  • :lt(index)

2.2.10 排除選擇器

  • :not 非

三、選擇器優化

  • 使用合適的選擇器表示式可以提高效能、增強語義並簡化邏輯。常用的選擇器中,ID選擇器速度最快,其次是型別選擇器。

    • 多用ID選擇器
    • 少直接使用class選擇器
    • 多用父子關係,少用巢狀關係
  • 查詢

    • 向下查詢後代元素
      • children():取得所有元素的所有子元素集合(子元素)(沿著 DOM 樹向下遍歷單一層級)
      • find():搜尋所有與指定表示式匹配的元素(所有後代元素中查詢)
    • 查詢兄弟元素 siblings()查詢當前元素的兄弟

四、JQuery操作屬性

1..操作屬性:attr()、prop()

  • attr和prop區別:如果屬性的值是布林型別的值 用prop操作,反之attr

    返回屬性的值:
    $(selector).attr(attribute)
    
    設定屬性和值:
    $(selector).attr(attribute,value)
    
    使用函式設定屬性和值:
    $(selector).attr(attribute,function(index,currentvalue))
    
    設定多個屬性和值:
    $(selector).attr({attribute:value, attribute:value,...})