JQuery學習筆記一(JQuery選擇器.css樣式操作,節點關係)

目錄

一.JQuery瞭解

1,原生js的問題

         2. JQuery簡單介紹

2.1 官方自我介紹:

 2.2 引入JQuery

 二 .JQuery 對象 和 DOM 對象

1.DOM

1.1 DOM 模型

1.2 DOM 節點 

1.3 DOM 對象

 2. JQuery對象

 3. JQuery對象和DOM對象的相互轉換

 3.1 DOM 對象轉化JQuery對象

3.2  JQuery對象轉化DOM 對象

三.$()選擇器

1.$()選擇的結果是一個類數組

2.使用方法(引號問題)

3.文檔加載

 3.1 window.onload()函數和$(document).ready()函數的對比

四. 選擇器

1. 基本選擇器

1.1 標籤選擇器

1.2 類選擇器

1.3 id選擇器

1.4 並集(或)選擇器 

1.5 交集選擇器(同時存在)

1.6 全局選擇器:選中全部的元素

2.層次選擇器

2.1 相鄰選擇器+

2.2 同輩選擇器 ~

2.3 後代選擇器 空格

2.4 後代選擇器 > 

3.屬性選擇器

4. 過濾選擇器

5.可見性選擇器

6.is()

五. 序與迭代

1.序號eq()

2.index()方法

3.each() 方法

4.size()方法和length屬性

5. get()方法

六. css樣式

1. 讀取樣式值

         2. 設置屬性值

2.1 設置一個屬性值

2.2 設置多個屬性值

2.3 設置的屬性可以多樣

3. 自定義屬性

3.1 獲取自定義屬性

3.2 設置自定義屬性

4. 有關於class類名

4.1 添加類名 addClass()

4.2 刪除類名 removeClass()

4.3 替換類名 toggleClass()

5. 關於節點值

5.1 html()

5.2 text()

七. 節點關係

1. children()

2. find()

3. parent()

4. parents()

5. silbling()

6. prev() next() prevAll() nextAll()

7. offsetParent()


JQuery學習筆記二(節點操作,事件監聽,動畫相關方法)

一.JQuery瞭解

1,原生js的問題

在我們變成的時候回很容易發現,原生的js編程會有很多的問題,尤其是在兼容性方面:

  1. 選擇元素,權限兼容的只有getElementById和getElementsByTagName;其他方法都有兼容問題

  2. 樣式操作也有兼容問題,還得我們自己封裝,封裝getStyle()

  3. 動畫也麻煩,也得自己封裝,封裝animation()

  4. HTML節點操作也挺麻煩的

JS裏面麻煩的都是和DOM編程有關的,有兼容問題,還的我們自己封裝.

jQuery是原生JS封裝的,簡化了JS的DOM編程,完美的解決了原生js在DOM操作上的難題

2. JQuery簡單介紹

2.1 官方自我介紹:

jQuery是一個快速、小型的、特性很多的JS庫,它把很多事兒都變得簡單。jQuery是免費的、開源的。

版本線:

1.x版本

2.x版本

3.x版本

 

jQuery分壓縮版和未壓縮版 ,以下面的兩個版本爲例:

  • jquery-3.3.1.min.js :壓縮版,發佈版84.8KB
  • jquery-3.3.1.js :常規版,開發版265KB 

 2.2 引入JQuery

<script  src="...." >
</script>

 二 .JQuery 對象 和 DOM 對象

1.DOM

1.1 DOM 模型

將html  xml等文檔結構的標籤語言 看成dom模型,下圖爲例,就是一個簡單的DOM模型.

1.2 DOM 節點 

  1.     元素節點    <html>   <ul>... <p>
  2.     屬性節點  :title  src  alt ...
  3.     文本節點: 文本節點

1.3 DOM 對象

     以上三種節點類型的具體對象 就是Dom對象。
    使用層面: 凡是JavaSCript能夠直接操作的對象,就是Dom對象。
    例如,var title = document.getElementById("myTitile");通過js獲取到的title對象 就是一個dom對象(就是<p>對象) 

 2. JQuery對象

   凡是jQuery能夠直接操作的對象,就是jQuery對象。
    例如:var $title = $("#myTitile") ; 通過jquery獲取到的 $title 就是一個jquery對象。
    同樣一個元素,即可以成爲一個dom對象(javascript對象),也可以成爲一個jquery對象

注意:dom對象 只適用於js的各種語法(函數、屬性),jquery對象只用於jquery的各種語法(函數、屬性)。 
dom對象和jquery對象的各自獨立。

例如:

  •     title 是dom對象,因此可以使用js屬性或方法 title.innerHTML
  •     $title 是jquery對象,因此可以使用jquery屬性或方法  $title.html()

建議:

  • js對象 直接寫title
  • jquery 加上$,例如$title

3. JQuery對象和DOM對象的相互轉換

例如:

     title.innerHTML;title ->$title  

     $title.html();   $title->title

 3.1 DOM 對象轉化JQuery對象

DOM 對象轉化爲JQuery 對象非常簡單,只需要用到JQuery工廠$().

語法:

$(DOM對象)

        let div = document.querySelector('.box');
        div.onclick = function () {
           window.alert($(div).html());
        }

3.2  JQuery對象轉化DOM 對象

基礎:jquery對象默認是一個數組 或集合;dom對象默認是一個單獨的對象

所以將之轉化爲DOM對象有兩種辦法:

  1. 看成數組:JQuery對象[0]
  2. 看成集合:JQuery對象.get(0)

三.$()選擇器

$ 就是jQuery的核心,query就是選擇的意思

基礎語法:

$(‘選擇器’),jQuery(‘選擇器’)

$可以用jQuery代替,$和jQuery是同一個函數

選中某個或某類元素

<style type="text/css">
    p {
        float:left;
        width: 60px;
        height: 60px;
        background-color: #ccc;
        margin-left: 10px;
        margin-top: 10px;
    }
</style>

<p></p>
<p></p>
<p></p>
<p></p>

<script src="jQuery.js"></script>
<script>
    console.log($)
    $('p').css('background-color','red');
</script>

1.$()選擇的結果是一個類數組

        console.log($('#box'));
        [div#box]

既然是類數組,就不能直接跟原生js的語法

$('#box').style.backgroundColor = 'red';

選擇結果是類數組,那麼很明顯上面的方式是錯誤的,如果想使用元素方法,可以加[0],將jQuery對象轉成元素對象

$('#box')[0].style.backgroundColor = 'red';

2.使用方法(引號問題)

$(‘選擇器’)裏面的引號不能丟,在jQuery中只有是以下幾個不用加引號,其他全部需要

不需要加引號的選擇

  • $(this)
  • $(document)
  • $(window)

 

3.文檔加載

// 文檔加載完畢後執行
$(document).ready(function(){
    
})
// 簡寫方案
$(function(){
    console.log($('div'))
})

 3.1 window.onload()函數和$(document).ready()函數的對比

函數名 window.onload() $(document).ready()
執行時機 必須等待網頁中所有的內容(如文檔,圖片,視頻等)加載完畢之後才能執行 網頁中所有DOM結構加載完畢之後即刻開始執行,(如文檔,圖片,視頻等)並沒有完全加載完畢
編寫個數 同一頁面不能編寫多個 同一頁面可以編寫多個
簡化寫法 $(function() {....})

四. 選擇器

這個是jQuery 的發明 和js沒有關係

寫在引號裏面,:當成篩選的功能符

以下都是序號,篩選器.

1. 基本選擇器

1.1 標籤選擇器

$('標籤名')

        $("p").html() 獲取p標籤對象,是jquery對象形式的
        $("p").length

1.2 類選擇器

$(".class值")

1.3 id選擇器

$("#id值")

1.4 並集(或)選擇器 

 逗號分割
 $(".class值,#id值")

1.5 交集選擇器(同時存在)

連續直接寫
        $(".class值#id值")
        $("p.myStyle").html():選中 即是p標籤,並且class的值是myStyle
        注意:不能出現歧義
            錯誤寫法 $(".myStylep").html()
        交集選擇器 在交接處 只能是.或#開頭的選擇器

1.6 全局選擇器:選中全部的元素

選中全部的元素
$("*")

2.層次選擇器

2.1 相鄰選擇器+

$("選擇器1+選擇器2")

2.2 同輩選擇器 ~

$("選擇器1~選擇器2")

2.3 後代選擇器 空格

$("選擇器1 選擇器2")

2.4 後代選擇器 > 

$("選擇器>選擇器2")

3.屬性選擇器

$("[屬性名]")

        $("[class]") :選中全部元素中 有class屬性的元素

    $("[屬性名=屬性值]")
        $("[class=xxx]")  
        $("[class='xxx']")    
    

  •     $("[class!=a]")  不等於, 包含兩種: 有class但值不是a,   沒有class
  •     $("[class^=a]")  class以a開頭的元素
  •     $("[class$=a]")  class以a結尾的元素
  •     $("[class*=a]")  class有a的元素

4. 過濾選擇器

過濾選擇器的一些方法和其他函數類型,例如 $("ul>li:first")等價於$("ul>li").first()
    有些不同,例如,  可以$("ul>li:odd")    ;錯誤$("ul>li").odd();

   基本過濾選擇器(從0開始)

  • :first:最開頭那一個
  • :last:最後那一個
  • :even:偶數
  • :odd:奇數
  • :eq(index):第index個

   其他選擇過濾器

  • :gt(index) : >index的全部元素
  • :lt(index): <index的全部元素
  • :not(選擇器) :除了...以外
  • :header:選中所有的標題元素 h1 h2 ...
  • :focus: 獲取當前焦點的元素

5.可見性選擇器

  •     :visible :選中所有可見的元素
  •     :hidden:選中所有隱藏的元素

6.is()

判斷是不是返回true,或false

判斷點擊的這個p標籤是不是有這個類叫做

$('p').click(function(){
    alert($(this).is('.t'))
})

還可以判斷是不是奇數的,is()裏面可以寫篩選器

$('p').click(function(){
    alert($(this).is(':odd'))
})

五. 序與迭代

1.序號eq()

按照選擇器選中的元素,然後在通過序號挑選

    <style>
        p {
            display: block;
            width: 200px;
            height: 30px;
            font-size: 18px;
            text-align: center;
            line-height: 30px;
            margin-bottom: 5px;
            border:1px solid #000;
        }
    </style>

    <div class="box1">
        <p>this is box 1</p>
        <p>this is box 2</p>
        <p>this is box 3</p>
    </div>
    <div class="box2">
        <p>this is box 4</p>
        <p>this is box 5</p>
        <p>this is box 6</p>
    </div>

<script>
    $('p').eq(1).css('background-color','pink');
    $('.box2 p').eq(1).css('background-color','orange');
</script>

 

也就是說 $()函數將返回一個對象隊列,用eq來精確選擇這個隊列中的你想要的元素

2.index()方法

返回這個元素在親兄弟中的排名,無視選擇器怎麼選.

    //index()方法
    $('p').click(function () {
        console.log($(this).index())
    })

依次點擊六個box打印的結果如下:

$(this).index()是一個很常見的寫法,表示觸發這個事件的元素,在親兄弟中的排名.

 利用index()方法寫對應

    // 事件綁定在box1裏面的p
    $('.box1 p').click(function(){
        // 改變的是box2裏面的對應的p
        $('.box2 p').eq($(this).index()).css("background-color","red");
    })

3.each() 方法

迭代方法,說白了就是循環

表示遍歷節點,也叫作迭代符合條件的節點

    $('p').each(function(index,item) {
        console.log(index);
        console.log(item);
        //原生js設置樣式
        // item.style.backgroundColor = '#999';
        //JQuery方式
        $(item).css('background-color','#58a');
    })

4.size()方法和length屬性

size() 方法和 length 屬性是一樣的, 獲取jQuery對象中元素的個數.

這兩個數字永遠相同

    //獲取所有p元素的個數
    console.log($('p').length); //6
    console.log($('p').size()); //6

值得注意的是,這兩個獲取到的值死一樣的,但是我個人更推薦使用length屬性,因爲size()方法只有在1.8以下的版本才能用

5. get()方法

get()方法和eq()方法基本一致,都依賴$()的序列

不一樣的是:

get()方法返回的是原生js的DOM對象

eq()方法返回的是JQuery對象

 

    $('p').get(0).style.backgroundColor = 'pink';
    $('p').eq(1).css('background-color','#999');

六. css樣式

1. 讀取樣式值

讀取樣式,可以讀取計算後的樣式,寫一個參數,爲獲取值的屬性

參數爲屬性字符串,必須加引號

讀取的值有單位

    console.log( $('p:first').css('background-color'));
    console.log( $('p:first').css('width'))

 

2. 設置屬性值

2.1 設置一個屬性值

如果只設置一個屬性值,需要傳兩個參數,

第一個參數爲需要設置值的屬性

第二個參數爲需要設置的值,如果爲數值,不需要加單位,

    $("p:last").css('background-color','#81C784');
    $("p:last").css('width','300');

2.2 設置多個屬性值

如果想要同時設置多個屬性值,可以寫成JSON

    $('p:odd').css({
        'width':300,
        'height':50,
        'background-color':'#8BC34A',
        'color':'#E0E0E0',
    });

當然,我們也可以單獨的設置每一個樣式達到同樣的效果.

2.3 設置的屬性可以多樣

 設置的屬性不僅可以爲改變後的值,還可以設置+= 的值,就是在原有的基礎上加多少像素

    $('p:eq(0)').css('width','+=100px');
    $('p:eq(2)').css('width','+=100');

兩種寫法效果相同.

3. 自定義屬性

3.1 獲取自定義屬性

通過attr()方法獲取自定義屬性

console.log($('p:first').attr('data')); //first

3.2 設置自定義屬性

    $('p:first').attr('data','123');
    //修改自定義屬性data的值從first變爲123

4. 有關於class類名

4.1 添加類名 addClass()

    $('p:last').addClass('last')

4.2 刪除類名 removeClass()

    $('p:last').removeClass('last')

4.3 替換類名 toggleClass()

遵循有則刪除,無則添加原則

$('p:last').toggleClass('last')

5. 關於節點值

5.1 html()

相當於原生JavaScript中的innerHTML

    $('p:first').html();  // 獲取值
    $('p:first').html('<h2>this is h2</h2>'); // 設置值

5.2 text()

就是innerText

    $('p:first').text();  // 獲取值
    $('p:first').text('<h2>this is h2</h2>'); // 設置值

七. 節點關係

1. children()

選中所有的子元素

表示選取親兒子,不選擇後代,選擇所有的子元素

$('.box').children()

選擇所有子元素中的div元素

$('.box').children('div')

還可以添加篩選器

$('.box').children('div:odd')

2. find()

查詢所有的後代選擇器,返回後代所有元素的列表

    console.log($('.box1').find('p'))

注意,和children()方法不一樣,find()方法裏面,必須寫參數,表示後代的誰,

find就是尋找的意思,就是你找後代裏的誰

3. parent()

找父元素,任何一個元素只有一個父元素

    console.log($('.box1 p').parent())

4. parents()

尋找所有的祖先元素,可以傳參數,尋找哪個祖先元素

$('p').parents('div')

5. silbling()

尋找所有的親兄弟元素節點

$('p').sibling()

可以添加選擇器

$('p').sibling('div')

6. prev() next() prevAll() nextAll()

前一個兄弟,後一個兄弟,前所有的兄弟,後所有的兄弟元素節點

7. offsetParent()

查找定位父級

$('p').offsetParent('div')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章