05-前端之jQuery


一. jQuery是什么?

  <1> jQuery由美國人John Resig創建,至今已吸引了來自世界各地的眾多 javascript高手加入其team。

  <2> jQuery是繼prototype之后又一個優秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE!

  <3> 它是輕量級的js庫(壓縮后只有21k) ,這是其它的js庫所不及的,它兼容CSS3,還兼容各種瀏覽器

  <4> jQuery是一個快速的,簡潔的javaScript庫,使用戶能更方便地處理HTMLdocuments、events、實現動畫效果,並且方便地為網站提供AJAX交互。

  <5> jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。

二. 什么是jQuery對象?

  jQuery 對象就是通過jQuery包裝DOM對象后產生的對象。jQuery 對象是 jQuery 獨有的如果一個對象是 jQuery 對象那么它就可以使用 jQuery 里的方法:

  $(“#test”).html();

$("#test").html()    
       //意思是指:獲取ID為test的元素內的html代碼。其中html()是jQuery里的方法 

       // 這段代碼等同於用DOM實現代碼: document.getElementById("test").innerHTML; 

       //雖然jQuery對象是包裝DOM對象后產生的,但是jQuery無法使用DOM對象的任何方法,同理DOM對象也不能使用jQuery里的方法.亂使用會報錯

       //約定:如果獲取的是 jQuery 對象, 那么要在變量前面加上$. 

var $variable = jQuery 對象
var variable = DOM 對象

$variable[0]:jquery對象轉為dom對象      
$("#msg").html(); 
$("#msg")[0].innerHTML;

$(variable): dom對象轉換為jQuery對象
variable.innerHTML;
$(variable).html();

  jquery的基礎語法:$(selector).action()

  jQuery的入口函數:

//方式一:
//1.文檔加載完畢,圖片不加載的時候,就可以執行這個函數。
       $(document).ready(function () {
           alert(1);
       })

//方式二:(寫法一的簡潔版)
//2.文檔加載完畢,圖片不加載的時候,就可以執行這個函數。
       $(function () {
           alert(1);
       });

//方式三:
//3.文檔加載完畢,圖片也加載完畢的時候,在執行這個函數。
       $(window).ready(function () {
           alert(1);
       })

三. 尋找元素(選擇器和篩選器)

  1. 選擇器

    a. 基本選擇器
$("*")             //通配符
$("#id")          // id選擇器
$(".class")       // class選擇器
$("element")    // 標簽選擇器
    b. 層級選擇器
$(".father div")     // 后代選擇器
$(".father>div")   // 子代選擇器
$(".father,div")    // 並集選擇器
$("div.father")     //交集選擇器
    c. 基本篩選器
$("li:first")  
$("li:eq(2)")  
$("li:even")   // 索引為偶數
$("li:odd")    // 索引為奇數
$("li:gt(1)")
$("li:lt(2)")
    d. 屬性選擇器
$('[id="div1"]')   
$('["alex="sb"][id]')
    e. 表單選擇器
$('input[type=checkbox]:checked')      // 獲取選中CheckBox項
$("[type='text']")----->$(":text")         //注意只適用於input標簽  : $("input:checked")

  2. 篩選器

    a. 過濾篩選器
$("li").eq(2)  
$("li").first()  
$("ul li").hasclass("test")
    b. 查找篩選器

$("#box").find(".box1");
$("#box").siblings();  // 所有兄弟標簽,不包括自己。

四. 操作元素(屬性,css,文檔處理)

--------------------------屬性
$("").attr();
$("").removeAttr();
$("").prop();
$("").removeProp();
--------------------------CSS類
$("").addClass(class|fn)
$("").removeClass([class|fn])
--------------------------HTML代碼/文本/值
$("").html([val|fn])
$("").text([val|fn])
$("").val([val|fn|arr])
---------------------------
$("").css("color","red")
  a. attr()

  設置屬性值或者 返回被選元素的屬性值

        //獲取值:attr()設置一個屬性值的時候 只是獲取值
        var id = $('div').attr('id')
        console.log(id)
        var cla = $('div').attr('class')
        console.log(cla)
        //設置值
        //1.設置一個值 設置div的class為box
        $('div').attr('class','box')
        //2.設置多個值,參數為對象,鍵值對存儲
        $('div').attr({name:'hahaha',class:'happy'})
  b. removeAttr()

  移除屬性

//刪除單個屬性
$('#box').removeAttr('name');
$('#box').removeAttr('class');

//刪除多個屬性
$('#box').removeAttr('name class');
  c. prop()

  prop() 方法設置或返回被選元素的屬性和值。

  當該方法用於返回屬性值時,則返回第一個匹配元素的值。

  當該方法用於設置屬性值時,則為匹配元素集合設置一個或多個屬性/值對。

  語法:

    返回屬性的值:

$(selector).prop(property)

    設置屬性和值:

$(selector).prop(property,value)

    設置多個屬性和值:

$(selector).prop({property:value, property:value,...})

  注意:

//對於HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。
//對於HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。
//像checkbox,radio和select這樣的元素,選中屬性對應“checked”和“selected”,這些也屬於固有屬性,因此
//需要使用prop方法去操作才能獲得正確的結果。
  d. addClass()

  為每個匹配的元素添加指定的類名。

$('div').addClass("box");//追加一個類名到原有的類名

  還可以為匹配的元素添加多個類名

$('div').addClass("box box2");//追加多個類名
  e. removeClass()

  從所有匹配的元素中刪除全部或者指定的類。

     移除指定的類(一個或多個)

$('div').removeClass('box');

  移除全部的類

$('div').removeClass();
  f. toggleClass()

  如果存在(不存在)就刪除(添加)一個類。

  語法:toggleClass('box')

$('span').click(function(){
    //動態的切換class類名為active
    $(this).toggleClass('active')
})
  g. html()

  獲取值:

  語法;

  html() 是獲取選中標簽元素中所有的內容

$('#box').html();

  設置值:設置該元素的所有內容 會替換掉 標簽中原來的內容

$('#box').html('<a href="https://www.baidu.com">百度一下</a>');
  h. text()

  獲取值:

  text() 獲取匹配元素包含的文本內容

  語法:

$('#box').text();

  設置值:
  設置該所有的文本內容

$('#box').text('<a href="https://www.baidu.com">百度一下</a>');

  注意:值為標簽的時候 不會被渲染為標簽元素 只會被當做值渲染到瀏覽器中

  i. val()

  獲取值:

  val()用於表單控件中獲取值,比如input textarea select等等

  設置值:

$('input').val('設置了表單控件中的值');
  j. 使用jQuery操作input的value值

  表單控件是我們的重中之重,因為一旦牽扯到數據交互,離不開form表單的使用,比如用戶的注冊登錄功能等

  那么通過上節知識點我們了解到,我們在使用jquery方法操作表單控件的方法:

$(selector).val()//設置值和獲取值

  看如下HTML結構:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form>
    <input type="radio" name="sex" value="112"/>男
    <!-- 設置cheked屬性表示選中當前選項 -->
    <input type="radio" name="sex" value="11" checked=""/>女

    <input type="checkbox" value="a" checked=""/>吃飯
    <input type="checkbox" value="b"/>睡覺
    <input type="checkbox" value="c" checked=""/>打豆豆

    <!-- 下拉列表 option標簽內設置selected屬性 表示選中當前 -->
    <select name="timespan" id="timespan" class="Wdate">
        <option value="1">8:00-8:30</option>
        <option value="2" selected="">8:30-9:00</option>
        <option value="3">9:00-9:30</option>
    </select>
    <input type="text" name="" id="" value="111"/>
</form>

</body>
</html>

  頁面展示效果:

  操作表單控件代碼如下:

<script src="jQuery.js"></script>
<script>
    $(function () {
        // 一、獲取值
        //1.獲取單選框被選中的value值
        console.log($('input[type=radio]:checked').val());

        //2.復選框被選中的value,獲取的是第一個被選中的值
        console.log($('input[type=checkbox]:checked').val());

        //3.下拉列表被選中的值

        var obj = $("#timespan option:selected");
        // 獲取被選中的值
        var time = obj.val();
        console.log(time);
        // 獲取文本
        var time_text = obj.text();
        console.log("val:" + time + " text" + time_text);

        //4.獲取文本框的value值
        console.log($("input[type=text]").val());//獲取文本框中的值

        // 二.設置值
        //1.設置單選按鈕和多選按鈕被選中項
        $('input[type=radio]').val(['112']);
        $('input[type=checkbox]').val(['a', 'b']);

        //2.設置下拉列表框的選中值,必須使用select
        /*因為option只能設置單個值,當給select標簽設置multiple。
        那么我們設置多個值,就沒有辦法了,但是使用select設置單個值和多個值都可以
        */
        $('select').val(['1', '2']);

        //3.設置文本框的value值
        $('input[type=text]').val('試試就試試')
    })

</script>

  示例:全反選

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>

<button onclick="selectall();">全選</button>
<button onclick="cancel();">取消</button>
<button onclick="reverse();">反選</button>

<table border="1">
    <tr>
        <td><input type="checkbox"></td>
        <td>111</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>222</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>333</td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>444</td>
    </tr>
</table>

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

    function selectall() {

        $("table :checkbox").prop("checked", true)
    }

    function cancel() {

        $("table :checkbox").prop("checked", false)
    }

    function reverse() {
        // var idlist = $("table :checkbox");
        // for (var i = 0; i < idlist.length; i++) {
        //     var element = idlist[i];
        //     var ischecked = $(element).prop("checked");
        //     if (ischecked) {
        //         $(element).prop("checked", false)
        //     } else {
        //         $(element).prop("checked", true)
        //     }
        //
        // }
//    jquery循環的兩種方式
        //方式一
//                 li=[10,20,30,40]
//                 dic={name:"yuan",sex:"male"}
//                 $.each(li,function(i,j){
//                     console.log(i,j)
//                 })

        //方式二
//                    $("tr").each(function(i,j){
//                        console.log($(this).html())
//                    })


        $("table :checkbox").each(function () {

            $(this).prop("checked", !$(this).prop("checked"));

//                     if ($(this).prop("checked")){
//                         $(this).prop("checked",false)
//                     }
//                     else {
//                         $(this).prop("checked",true)
//                     }
        });
    }

</script>
</body>
</html>

  2. 文檔操作

  之前js中咱們學習了js的DOM操作,也就是所謂的增刪改查DOM操作。通過js的DOM的操作,大家也能發現,大量的繁瑣代碼實現我們想要的效果。那么jQuery的文檔操作的API提供了便利的方法供我們操作我們的文檔。

  看一個之前我們js操作DOM的例子:

var oUl = document.getElementsByTagName('ul')[0];
var oLi = document.createElement('li');
oLi.innerHTML = '趙雲';
oUl.appendChild(oLi);

  2.1 插入操作

  2.1.1 append()

  語法:

父元素.append(子元素)

  解釋:追加某元素,在父元素中添加新的子元素。子元素可以為:stirng | element(js對象) | jquery元素

  代碼如下:

var oli = document.createElement('li');
oli.innerHTML = '哈哈哈';
$('ul').append('<li>1233</li>');
$('ul').append(oli);
$('ul').append($('#app'));

  PS:如果追加的是jquery對象那么這些元素將從原位置上消失。簡言之,就是一個移動操作。

  2.1.2. appendTo()

  語法:

子元素.appendTo(父元素)

  解釋:追加到某元素, 子元素添加到父元素

$('<li>天王蓋地虎</li>').appendTo($('ul')).addClass('active')

  PS:要添加的元素同樣既可以是stirng 、element(js對象) 、 jquery元素

  2.1.3. prepend()

  語法:

父元素.prepend(子元素);

  解釋:前置添加, 添加到父元素的第一個位置

$('ul').prepend('<li>我是第一個</li>')
  2.1.4. prependTo()

  語法:

子元素.prependTo(父元素);

  解釋:前置添加, 添加到父元素的第一個位置

$('<a href="#">路飛學誠</a>').prependTo('ul')
  2.1.5. after()

  語法:

兄弟元素.after(要插入的兄弟元素);
要插入的兄弟元素.inserAfter(兄弟元素);

  解釋:在匹配的元素之后插入內容 

$('ul').after('<h4>我是一個h3標題</h4>')
$('<h5>我是一個h2標題</h5>').insertAfter('ul')
  2.1.6. before()

  語法:

兄弟元素.before(要插入的兄弟元素);
要插入的兄弟元素.inserBefore(兄弟元素);

  解釋:在匹配的元素之前插入內容 

$('ul').before('<h3>我是一個h3標題</h3>')
$('<h2>我是一個h2標題</h2>').insertBefore('ul')

  2.2. 克隆操作

  語法:

$(選擇器).clone();

  解釋:克隆匹配的DOM元素

$('button').click(function() {

  // 1.clone():克隆匹配的DOM元素
 // 2.clone(true):元素以及其所有的事件處理並且選中這些克隆的副本(簡言之,副本具有與真身一樣的事件處理能力)
  $(this).clone(true).insertAfter(this);
})

  2.3. 修改操作

  2.3.1 replaceWith

  語法:

$(selector).replaceWith(content);

  將所有匹配的元素替換成指定的string、js對象、jquery對象。

//將所有的h5標題替換為a標簽
$('h5').replaceWith('<a href="#">hello world</a>')
//將所有h5標題標簽替換成id為app的dom元素
$('h5').replaceWith($('#app'));
  2.3.2 replaceAll

  語法:

$('<p>哈哈哈</p>')replaceAll('h2');

  解釋:替換所有。將所有的h2標簽替換成p標簽。

$('<br/><hr/><button>按鈕</button>').replaceAll('h4')

  2.4 刪除操作

  2.4.1 remove()

  語法:

$(selector).remove(); 

  解釋:刪除節點后,事件也會刪除(簡言之,刪除了整個標簽)

$('ul').remove();
  2.4.2 empty()

  語法:

$(selector).empty(); 

  解釋:清空選中元素中的所有后代節點

//清空掉ul中的子元素,保留ul
$('ul').empty()

五. 動畫效果

  1. 顯示動畫(show())
$("div").show();

  表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過display: block;實現的。

  2. 隱藏動畫(hide())
$("div").hide();

  表示讓指定的元素直接顯示出來。其實這個方法的底層就是通過display: none;實現的。

  案例一:

  要求:點擊button,實現盒子的顯示和隱藏。

  方式一:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #box {
            width: 200px;
            height: 200px;
            background-color: green;
            border: 1px solid red;
            display: none;
        }
    </style>
</head>
<body>
<button id="btn">顯示</button>
<div id="box">
</div>

</body>
<script src="jQuery.js"></script>

<script type="text/javascript">
    //jquery 提供了一些方法 show() hide() 控制元素顯示隱藏
    var isShow = true;
    $('#btn').click(function () {
        if (isShow) {
            $('#box').show(function () {
                $(this).text('盒子出來了');
                $('#btn').text('隱藏');
                isShow = false;
            })
        } else {
            $('#box').hide(function () {
                $(this).text('');
                $('#btn').text('顯示');
                isShow = true;
            })
        }
    })

</script>
</html>

  方式二:

  顯示和隱藏的來回切換采用的是toggle()方法:就是先執行show(),再執行hide()。

  代碼如下:

        $('#btn').click(function(){
            $('#box').toggle(function(){
                $(this).text('盒子出來了');    
                if ($('#btn').text()=='隱藏') {
                    $('#btn').text('顯示');    
                }else{
                    $('#btn').text('隱藏');    
                }
            });
        })
  3. 滑入動畫(slideDown())

  類似於生活中的卷簾門

$(selector).slideDown(speed, 回調函數);

  解釋:下拉動畫,顯示元素。

  注意:省略參數或者傳入不合法的字符串,那么則使用默認值:400毫秒(同樣適用於fadeIn/slideDown/slideUp)

  4. 滑出動畫效果(slideUp()): 
$(selector).slideUp(speed, 回調函數);

  解釋:上拉動畫,隱藏元素。

  5. 滑入滑出切換動畫效果(slideToggle)
$(selector).slideToggle(speed, 回調函數);

  案例如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 300px;
            height: 300px;
            display: none;
            background-color: green;
        }
    </style>

</head>
<body>
<button>滑入</button>
<button>滑出</button>
<button>切換</button>
<div></div>

    <script src="jQuery.js"></script>
    <script>
        $(function () {
            //點擊按鈕后產生動畫
            $("button:eq(0)").click(function () {

                //滑入動畫: slideDown(毫秒值,回調函數[顯示完畢執行什么]);
                $("div").slideDown(function () {
                    alert("動畫執行完畢!");
                });
            });

            //滑出動畫
            $("button:eq(1)").click(function () {

                //滑出動畫:slideUp(毫秒值,回調函數[顯示完畢后執行什么]);
                $("div").slideUp(function () {
                    alert("動畫執行完畢!");
                });
            });

            $("button:eq(2)").click(function () {
                //滑入滑出切換(同樣有四種用法)
                $("div").slideToggle();
            })
        })
    </script>
</body>
</html>
  6. 淡入動畫效果(fadeIn())
$(selector).fadeIn(speed, callback);

  作用:讓元素以淡淡的進入視線的方式展示出來。

  7. 淡出動畫效果(fadeOut())
$(selector).fadeOut(speed,callback);

  作用:讓元素以漸漸消失的方式隱藏起來

  8. 淡入淡出切換動畫效果(fadeToggle())
$(selector).fadeToggle(speed,callback);

  作用:通過改變透明度,切換匹配元素的顯示或隱藏狀態。

  參數的含義同show()方法。

  代碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 300px;
            height: 300px;
            display: none;
            background-color: green;
        }
    </style>

</head>
<body>
<button>淡入</button>
<button>淡出</button>
<button>切換</button>
<div></div>

    <script src="jQuery.js"></script>
    <script>
        $(function () {
            //點擊按鈕后產生動畫
            $("button:eq(0)").click(function () {

                //淡入動畫: fadeIn;
                $("div").fadeIn(function () {
                });
            });

            //淡出動畫
            $("button:eq(1)").click(function () {

                //淡出動畫:fadeOut;
                $("div").fadeOut(function () {
                });
            });

            $("button:eq(2)").click(function () {
                //淡入淡出切換
                $("div").fadeToggle();
            })
        })
    </script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM