主頁 > 企業開發 > 前端jQurey

前端jQurey

2020-09-15 03:15:18 企業開發

目錄

  • 1.楔子
  • 2.jqeury介紹
    • 2.1為什么要使用jQuery
    • 2.2jQuery 的兩大特點
    • 2.3什么是 jQuery
  • 3.jQuery的使用
    • 3.1使用 jQuery 的基本步驟
    • 3.2jQuery 的入口函式和 $ 符號
      • 3.2.1入口函式(重要)
      • 3.2.2jQuery的 $ 符號
  • 4.js中的DOM物件 和 jQuery物件比較(重點,難點)
    • 4.1二者的區別
    • 4.2二者的相互轉換
  • 5.jQuery查找標簽
    • 5.1基本選擇器
      • 5.1.1層級選擇器
      • 5.1.2屬性選擇器
    • 5.2篩選器
      • 5.2.1基本篩選器
      • 5.2.2表單篩選器
    • 5.3篩選器方法
  • 6.jQuery操作標簽
    • 6.1標簽內文本操作
    • 6.2檔案標簽操作
      • 6.2.1插入標簽
      • 6.2.2洗掉標簽 remove、detach和empty
      • 6.2.3修改標簽 replaceWith和replaceAll
      • 6.2.4克隆標簽 clone
    • 6.3屬性操作
      • 6.3.1attr() 設定屬性值、者獲取屬性值
      • 6.3.2removeAttr() 移除屬性
      • 6.3.3prop()
    • 6.4class類屬性
      • 6.4.1addClass添加類名
      • 6.4.2removeClass移除類名
      • 6.4.3toggleClass類的切換
    • 6.5val 表單控制元件value屬性
    • 6.6css樣式
    • 6.7盒子樣式屬性
      • 6.7.1內容 : 寬度(width)和高度(height)
      • 6.7.2內容+padding : 寬度(innerWidth)和高度(innerHeight)
      • 6.7.3內容+padding+border : 寬度(outerWidth)和高度(outerHeight)
    • 6.8滾動條距離屬性
  • 7.jQuery影片效果
    • 7.1顯示影片
    • 7.2隱藏影片
      • 練習 : 實作點擊按鈕顯示盒子,再點擊按鈕隱藏盒子
    • 7.3開關式顯示隱藏影片
    • 7.4滑入和滑出
      • 7.4.1滑入影片效果:(類似于生活中的卷簾門):下拉影片,顯示元素,
      • 7.4.2滑出影片效果: 上拉影片,隱藏元素,
      • 7.4.3滑入滑出切換影片效果:
    • 7.5淡入淡出影片
    • 7.6自定義影片
      • 7.6.1語法:
      • 7.6.2作用:執行一組CSS屬性的自定義影片,
    • 7.7停止影片
  • 8.jQuery的事件操作
    • 8.1系結事件
    • 8.2解綁事件
    • 8.3補充 一次性事件
    • 8.4事件委托(事件代理)
  • 9.示例

1.楔子

需求一:有html標簽關系如下,請找到所有的含有a標簽的li標簽

    <div>
        <ul>
            <li class="city">北京</li>
            <li class="city"><a href=https://www.cnblogs.com/fengqiang626/p/"">上海
            
  • 天津
  • 原生js實作

    <script>
        var objs = document.getElementsByClassName('city')
        for(var i=0;i< objs.length;i++){
            arry_a = objs[i].getElementsByTagName('a')
            if(arry_a.length>0){
                console.log(objs[i]
                )
            }
        }
    </script>
    

    jqeury實作

    $('li').has('a')
    

    需求二:將上面的li標簽實作隔行換色效果

    原生js實作

        var objs = document.getElementsByClassName('city')
        for(var i=0;i< objs.length;i++){
            if(i%2==0){
                objs[i].style.backgroundColor = 'lightblue'
            }else{
                objs[i].style.backgroundColor = 'lightyellow'
            }
        }
    

    jquery實作

        $('li:odd').css('background-color','lightblue')
        $('li:even').css('background-color','lightyellow')
    

    需求三:點擊按鈕,顯示頁面中的三個div,并給div添加文本內容

        <!--樣式-->
        <style type="text/css">
            div{
                width: 100px;
                height: 100px;
                background-color: green;
                margin-top: 20px;
                display: none;
            }
        </style>
    
        <!--body標簽-->    
        <button>操作</button>
        <div></div>
        <div></div>
        <div></div>
    

    原生js實作

    <script>
        var oBtn = document.getElementsByTagName('button')[0];
        var divArr = document.getElementsByTagName('div');
        oBtn.onclick = function () {
            for (var i = 0; i < divArr.length; i++) {
                divArr[i].style.display = "block";
                divArr[i].innerHTML = "趙云";
            }
        }
    </script>
    

    jquery實作

        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery3.4.1.js"></script>
        <script>
                var oBtn = $('button'); //根據標簽名獲取元素
                var oDiv = $('div'); //根據標簽名獲取元素
                oBtn.click(function(){
                    oDiv.show(2000).html('趙云');//顯示盒子,設定內容
                })
        </script>
    

    盡管,你現在啥也不知道,你就知道用上了jquery咱們寫代碼節省了很多操作,便利了很多就OK了~~~

    2.jqeury介紹

    2.1為什么要使用jQuery

    2.2jQuery 的兩大特點

    2.3什么是 jQuery

    jQuery 是 js 的一個庫,封裝了我們開發程序中常用的一些功能,方便我們呼叫,提高開發效率,

    js庫是把我們常用的復雜功能封裝到簡單的方法中,我們用的時候,將庫直接引入然后呼叫方法即可,

    初期,主要學習如何使用jQuery操作DOM,其實就是學習jQuery封裝好的那些功能API,

    這些API的共同特點是:幾乎全都是方法,所以,在使用jQuery的API時,都是方法呼叫,也就是說要加小括號(),小括號里面是相應的引數,引數不同,功能不同,

    3.jQuery的使用

    3.1使用 jQuery 的基本步驟

    下載 :jQuery有兩個檔案,一個是jquery-3.4.1.js(未壓縮版),一個是jquery-3.4.1.min.js(壓縮版,推薦專案上線時使用)

    關于jQuery的相關資料:

    注意:導包的代碼一定要放在js代碼的最上面,

    3.2jQuery 的入口函式和 $ 符號

    3.2.1入口函式(重要)

    原生 js 的入口函式指的是:window.onload = function() {}

    //原生 js 的入口函式,頁面上所有內容加載完畢,才執行,
    //不僅要等文本加載完畢,而且要等圖片也要加載完畢,才執行函式,
    window.onload = function () {
    alert(1);
    }
    

    jQuery的入口函式,有以下幾種寫法:

    寫法一:檔案加載完畢,圖片不加載的時候,就可以執行這個函式,

    $(document).ready(function () {
               alert(1);
           })
    

    寫法二:檔案加載完畢,圖片不加載的時候,就可以執行這個函式,(寫法一的簡潔版)

    $(function () {
               alert(1);
           });
    

    寫法三:檔案加載完畢,圖片也加載完畢的時候,在執行這個函式,

    $(window).ready(function () {
               alert(1);
           })
    

    jQuery入口函式與js入口函式的區別

    區別一:書寫個數不同:

    區別二:執行時機不同:

    檔案加載的順序:從上往下,邊決議邊執行,

    3.2.2jQuery的 $ 符號

    jQuery 使用 $ 符號原因:書寫簡潔、相對于其他字符與眾不同、容易被記住,

    jQuery占用了我們兩個變數:$ 和 jQuery,當我們在代碼中列印它們倆的時候:

    <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
    <script>
            console.log($);
            console.log(jQuery);
            console.log($===jQuery);
    </script>
    

    從列印結果可以看出,$ 代表的就是 jQuery,

    4.js中的DOM物件 和 jQuery物件比較(重點,難點)

    4.1二者的區別

    通過 jQuery 獲取的元素是一個jq物件陣列,其中包含著原生JS中的DOM物件

    針對下面這樣一個div結構:

    <div></div>
    <div id="app"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div></div>
    

    通過原生 js 獲取這些元素節點的方式是:

        var myBox = document.getElementById("app");           //通過 id 獲取單個元素
        var boxArr = document.getElementsByClassName("box");  //通過 class 獲取的是偽陣列
        var divArr = document.getElementsByTagName("div");    //通過標簽獲取的是偽陣列
    

    通過 jQuery 獲取這些元素節點的方式是:(獲取的都是陣列)

       //獲取的是陣列,里面包含著原生 JS 中的DOM物件,
      console.log($('#app'));
      console.log($('.box'));
      console.log($('div'));
    

    總結:jQuery 就是把 DOM 物件重新包裝了一下,讓其具有了 jQuery 方法

    4.2二者的相互轉換

    DOM 物件 轉為 jQuery物件

    $(js物件);
    

    jQuery物件 轉為 DOM 物件

      jquery物件[index];      //方式1(推薦)
      jquery物件.get(index);  //方式2
    

    jQuery物件轉換成了 DOM 物件之后,可以直接呼叫 DOM 提供的一些功能,如:

    $('div')[1].style.backgroundColor = 'yellow';
    $('div')[3].style.backgroundColor = 'green';
    

    5.jQuery查找標簽

    5.1基本選擇器

    $("#id")         //id選擇器
    $("tagName")     //標簽選擇器
    $(".className")  //class選擇器
    $("*")           //通用選擇器
    
    $("div.c1")      // 交集選擇器 找到有含有c1類的div標簽
    $("#id, .className, tagName") //并集選擇器
    

    jquery選擇器示例代碼

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            div{
                float: left;
            }
        </style>
    </head>
    <body>
        <div></div>
        <div id="box"></div>
        <div class="box"></div>
        <div class="box"></div>
        <div></div>
        <script type="text/javascript" src=https://www.cnblogs.com/fengqiang626/p/"jquery3.4.1.js"></script>
        <script type="text/javascript">
            //入口函式
            $(function(){
                //三種方式獲取jquery物件
                var jqBox1 = $("#box");
                       var jqBox2 = $(".box");
                var jqBox3 = $('div');
                //操作標簽選擇器
                jqBox3.css('width', '100');
                jqBox3.css('height', 100);
                jqBox3.css('background-color', 'red');
                jqBox3.css('margin-top', 10);
                //操作類選擇器(隱式迭代,不用一個一個設定)
                        jqBox2.css("background", "green");
                        jqBox2.text('哈哈哈')
    
                        //操作id選擇器
                        jqBox1.css("background", "yellow");
    
            })
        </script>
    
    </body>
    </html>
    

    5.1.1層級選擇器

    $("x y");// x的所有后代y(子子孫孫)
    $("x > y");// x的所有兒子y(兒子)
    $("x + y")// 找到所有緊挨在x后面的y
    $("x ~ y")// x之后所有的兄弟y
    
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
        <script>
            $(function () {
                //獲取ul中的li設定為粉色
                //后代:兒孫重孫曾孫玄孫....
                var jqLi = $("ul li");
                jqLi.css("margin", 5);
                jqLi.css("background", "pink");
    
                //子代:親兒子
                var jqOtherLi = $("ul>li");
                jqOtherLi.css("background", "red");
            });
        </script>
    
    <body>
    
    • 111
    • 222
    • 333
      1. aaa
      2. bbb
      3. ccc

    5.1.2屬性選擇器

    $('[href]')       //找所有含href屬性的標簽
    $('a[href]')      //找所有含href屬性的a標簽
    $('a[title="luffy"]') //找所有title屬性是luffy的a標簽
    $('a[title="baidu"]') //找所有title屬性不是百度的a標簽
    $('a[href^="https"]') //找所有href屬性以https開頭的a標簽
    $('a[href$="html"]')  //找所有href屬性以html結尾的a標簽
    $('a[href*="i"]')  //找所有href屬性中含有i的a標簽
    $('a[href][title="luffy"]') //找所有含有href屬性且title屬性=luffy的a標簽 
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
             <div id="box">
                <h2 class="title">屬性元素器</h2>
                <!--<p class="p1">我是一個段落</p>-->
                <ul>
                    <li id="li1">分手應該體面</li>
                    <li class="what" id="li2">分手應該體面</li>
                    <li class="what">分手應該體面</li>
                    <li class="heihei">分手應該體面</li>
                </ul>
                <form action="" method="post">
    
                    <input name="username" type='text' value=https://www.cnblogs.com/fengqiang626/p/"1" checked="checked" />
                    
                    
                    
                    
                    
                    
                    
                
            
    <script src="jquery-3.2.1.js"></script> <script type="text/javascript"> $(function(){ //標簽名[屬性名] 查找所有含有id屬性的該標簽名的元素 $('li[id]').css('color','red'); //匹配給定的屬性是what值得元素 $('li[class=what]').css('font-size','30px'); //[attr!=value] 匹配所有不含有指定的屬性,或者屬性不等于特定值的元素 $('li[class!=what]').css('font-size','50px'); //匹配給定的屬性是以某些值開始的元素 $('input[name^=username]').css('background','gray'); //匹配給定的屬性是以某些值結尾的元素 $('input[name$=222]').css('background','greenyellow'); //匹配給定的屬性是以包含某些值的元素 $('button[class*=btn]').css('background','red'); }) </script> </html>

    5.2篩選器

    5.2.1基本篩選器

    :first // 第一個
    :last // 最后一個
    :eq(index)// 索引等于index的那個元素
    :even // 匹配所有索引值為偶數的元素,從 0 開始計數
    :odd // 匹配所有索引值為奇數的元素,從 0 開始計數
    :gt(index)// 匹配所有大于給定索引值的元素
    :lt(index)// 匹配所有小于給定索引值的元素
    :not(元素選擇器)// 移除所有滿足not條件的標簽
    :has(元素選擇器)// 根據含有某個后代篩選
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>基本過濾選擇器</title>
        </head>
        <body>
            <ul>
                <li>哈哈哈哈,基本過濾選擇器</li>
                <li>嘿嘿嘿</li>
                <li>天王蓋地虎</li>
                <li>小雞燉蘑菇</li>
                
            </ul>
        </body>
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
        <script type="text/javascript">
            
            $(function(){
                //獲取第一個 :first ,獲取最后一個 :last
                
                //奇數
                $('li:odd').css('color','red');
                //偶數
                $('li:even').css('color','green');
                
                //選中索引值為1的元素 *
                $('li:eq(1)').css('font-size','30px');
                
                //大于索引值1
                $('li:gt(1)').css('font-size','50px');
                
                //小于索引值1
                $('li:lt(1)').css('font-size','12px');    
                
            })    
        </script>
    </html>
    

    5.2.2表單篩選器

    type篩選器:text
    :password
    :file
    :radio
    :checkbox
    :submit
    :reset
    :button
    
    其他屬性篩選器
    :enabled
    :disabled
    :checked
    :selected
    

    5.3篩選器方法

    //找兄弟
    $("#id").siblings();// 兄弟們,不包含自己,.siblings('#id'),可以在添加選擇器進行進一步篩選
    
    //找弟弟
    $("#id").next()
    $("#id").nextAll()
    $("#id").nextUntil("#i2") //直到找到id為i2的標簽就結束查找,不包含它
    
    //找哥哥
    $("#id").prev()
    $("#id").prevAll()
    $("#id").prevUntil("#i2")
    
    //找祖輩
    $("#id").parent()
    $("#id").parents()  // 查找當前元素的所有的父輩元素(爺爺輩、祖先輩都找到)
    $("#id").parentsUntil('body') // 查找當前元素的所有的父輩元素,直到遇到匹配的那個元素為止,這里直到body標簽,不包含body標簽,基本選擇器都可以放到這里面使用,
    //找兒子
    $("#id").children();// 兒子們
    
    //過濾$("div").first() // 獲取匹配的第一個元素
    $("div").last() // 獲取匹配的最后一個元素
    $("div").eq(n) // 索引值等于指定值的元素,n是索引
    $("div").not() // 從匹配元素的集合中洗掉與指定運算式匹配的元素
    $("div").find("p") //后代選擇器,在所有div標簽中找后代的p標簽
    $("div").filter(".c1")  // 交集選擇器,從結果集中過濾出有c1樣式類的
    $("div").has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素,
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
             <div id="box">
                <p class="p1">
                    <span>我是第一個span標簽</span>
                    <span>我是第二個span標簽</span>
                    <span>我是第三個span標簽</span>
                </p>
                <button>按鈕</button>
            </div>
            <ul>
                <li class="list">2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
            </ul>
        </body>
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.2.1.js"></script>
        <script type="text/javascript">
            
            //獲取第n個元素 數值從0開始
            $('span').eq(1).css('color','#FF0000');
            
            //獲取第一個元素 :first :last    點語法  :get方法 和set方法
            $('span').last().css('color','greenyellow');
            $('span').first().css('color','greenyellow');
            
            //查找span標簽的父元素(親的)
            $('span').parent('.p1').css({"width":'200px','height':'200px',"background":'red'});
            
            //選擇所有的兄弟元素(不包括自己)
                      $('.list').siblings('li').css('color','red');
                 
                    //查找所有的后代元素
                       $('div').find('button').css('background','yellow');
    
                    //不寫引數代表獲取所有子元素,
                       $('ul').children().css("background", "green");
                       $('ul').children("li").css("margin-top", 10);
        </script>
    </html>
    

    6.jQuery操作標簽

    6.1標簽內文本操作

    html 標簽元素中所有的內容

    //獲取值:獲取選中標簽元素中所有的內容
    $('#box').html();  
    
    //設定值:設定該元素的所有內容 會替換掉 標簽中原來的內容
    $('#box').html('<a href=https://www.cnblogs.com/fengqiang626/p/"https://www.baidu.com">百度一下'); 
    

    text 標簽元素的文本內容

    //獲取值:獲取選中標簽元素中的文本內容
    $('#box').text();
    
    //設定值:設定該所有的文本內容
    $('#box').text('<a href=https://www.cnblogs.com/fengqiang626/p/"https://www.baidu.com">百度一下');
    

    text()方法接收的值為標簽的時候 不會被渲染為標簽元素 只會被當做值渲染到瀏覽器中

    6.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);
    

    6.2.1插入標簽

    append和appendTo

    //追加某元素,在父元素中添加新的子元素,子元素可以為:stirng | element(js物件) | jquery元素
    父元素.append(子元素)
    //追加到某元素,子元素添加到父元素
    子元素.appendTo(父元素)
    
    //append
    var oli = document.createElement('li');
    oli.innerHTML = '哈哈哈';
    $('ul').append('<li>1233</li>');
    $('ul').append(oli);
    $('ul').append($('#app'));
    
    //appendTo
    $('<li>天王蓋地虎</li>').appendTo($('ul')).addClass('active')
    

    如果追加的jquery物件原本在檔案樹中,那么這些元素將從原位置上消失,簡言之,就是移動操作,

    prepend和prependTo

    // 前置添加, 添加到父元素的第一個位置
    父元素.prepend(子元素);
    
    // 前置添加, 添加到父元素的第一個位置
    子元素.prependTo(父元素);
    
    // prepand
    $('ul').prepend('<li>我是第一個</li>')
    
    // prependTo
    $('<a href=https://www.cnblogs.com/fengqiang626/p/"#">路飛學誠').prependTo('ul')
    

    after和insertAfter

    // 在匹配的元素之后插入內容 
    兄弟元素.after(要插入的兄弟元素);
    要插入的兄弟元素.inserAfter(兄弟元素);
    
    $('ul').after('<h4>我是一個h3標題</h4>')
    $('<h5>我是一個h2標題</h5>').insertAfter('ul')
    

    before和insertBefore

    // 在匹配的元素之前插入內容
    兄弟元素.before(要插入的兄弟元素);
    要插入的兄弟元素.inserBefore(兄弟元素);
     
    //示例
    $('ul').before('<h3>我是一個h3標題</h3>')
    $('<h2>我是一個h2標題</h2>').insertBefore('ul')
    

    6.2.2洗掉標簽 remove、detach和empty

    //洗掉節點后,事件也會洗掉(簡言之,洗掉了整個標簽)
    $(selector).remove(); 
    
    // 洗掉節點后,事件會保留
    $(selector).detach(); 
    
    // 清空選中元素中的所有后代節點
    $(selector).empty(); 
    
    // remove
    $('ul').remove();
    
    // detach
    var $btn = $('button').detach()
    $('ul').append($btn) //此時按鈕能追加到ul中
    
    //empty
    $('ul').empty() //清空掉ul中的子元素,保留ul
    

    6.2.3修改標簽 replaceWith和replaceAll

    // selector被替換:將所有匹配的元素替換成指定的string、js物件、jquery物件,
    $(selector).replaceWith(content);
    
    // selector被替換:將所有的匹配的元素替換成p標簽,
    $('<p>哈哈哈</p>')replaceAll(selector);
    // replaceWith 
    $('h5').replaceWith('<a href=https://www.cnblogs.com/fengqiang626/p/"#">hello world') //將所有的h5標題替換為a標簽
    $('h5').replaceWith($('#app')); //將所有h5標題標簽替換成id為app的dom元素
    
    // replaceAll
    $('<br/><hr/><button>按鈕</button>').replaceAll('h4')
    

    6.2.4克隆標簽 clone

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

    6.3屬性操作

    6.3.1attr() 設定屬性值、者獲取屬性值

    //獲取值:attr()設定一個屬性值的時候 只是獲取值
    $('div').attr('id')
    $('div').attr('class')
    
    
    //設定值
    $('div').attr('class','box') //設定一個值
    $('div').attr({name:'hahaha',class:'happy'}) //設定多個值
    

    6.3.2removeAttr() 移除屬性

    //洗掉單個屬性
    $('#box').removeAttr('name');
    $('#box').removeAttr('class');
    
    //洗掉多個屬性
    $('#box').removeAttr('name class');
    

    6.3.3prop()

    // 查看屬性
    $(selector).prop(property)
    
    // 設定屬性
    $(selector).prop(property,value)
    
    // 設定多個屬性
    $(selector).prop({property:value, property:value,...})
    
    $('input').attr('checked')
    "checked"
    
    $('input').prop('checked') // true
    
    $('input').prop('cheched',false)  //設定取消選中
    

    表格全選、反選示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <button id="all">全選</button>
    <button id="reverse">反選</button>
    <button id="cancel">取消</button>
    <table border="1">
       <thead>
        <tr>
            <th>#</th>
            <th>姓名</th>
            <th>愛好</th>
        </tr>
       </thead>
        <tbody>
        <tr>
            <td><input type="checkbox"></td>
            <td>金老板</td>
            <td>開車</td>
        </tr>
        <tr>
            <td><input type="checkbox"></td>
            <td>alex</td>
            <td>抽煙、喝酒、燙頭</td>
        </tr>
        <tr>
            <td><input type="checkbox"></td>
            <td>苑昊(苑局)</td>
            <td>不洗頭、不翻車、不要臉</td>
        </tr>
        </tbody>
    </table>
    
    <script src=https://www.cnblogs.com/fengqiang626/p/"jquery3.4.1.js"></script>
    <script>
        // 點擊全選按鈕 選中所有的checkbox
        // DOM系結事件方法
        // $("#all")[0].onclick = function(){}
        // jQuery系結事件方法
        $("#all").click(function () {
            $(":checkbox").prop('checked', true);
        });
        // 取消
        $("#cancel").on("click", function () {
             $(":checkbox").prop('checked', false);
        });
        // 反選
        $("#reverse").click(function () {
            // 1. 找到所有選中的checkbox取消選中
            // $("input:checked").prop('checked', false);
            // // 2. 找到沒有選中的checkbox選中
            // $("input:not(:checked)").prop('checked', true);
            //你會發現上面這么寫,不行,為什么呢?因為你做了第一步操作之后,再做第二步操作的時候,所有標簽就已經全部取消選中了,所以第二步就把所有標簽選中了
    
            // 方法1. for回圈所有的checkbox,挨個判斷原來選中就取消選中,原來沒選中就選中
            var $checkbox = $(":checkbox");
            for (var i=0;i<$checkbox.length;i++){
                // 獲取原來的選中與否的狀態
                var status = $($checkbox[i]).prop('checked');
                $($checkbox[i]).prop('checked', !status);
            }
            // 方法2. 先用變數把標簽原來的狀態保存下來
        //     var $unchecked =  $("input:not(:checked)");
        //     var $checked = $("input:checked");
        //
        //     $unchecked.prop('checked', true);
        //     $checked.prop('checked', false);
        })
    
    </script>
    </body>
    </html>
    

    6.4class類屬性

    6.4.1addClass添加類名

    // 為每個匹配的元素添加指定的類名,
    $('div').addClass("box");//追加一個
    $('div').addClass("box box2");//追加多個
    

    6.4.2removeClass移除類名

    // 從所有匹配的元素中洗掉全部或者指定的類,
    $('div').removeClass('box');//移除box類
    $('div').removeClass();//移除全部的類
    
    var tag  = false;
    $('span').click(function(){
        if(tag){
            $('span').removeClass('active')
            tag=false;
        }else{
            $('span').addClass('active')
            tag=true;
        }    
    })
    

    通過添加洗掉類,來實作元素的顯示隱藏

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .active{
                color: red;
            }
        </style>
    </head>
    <body>
         <ul>
             <li class="item">張三</li>
             <li class="item">李四</li>
             <li class="item">王五</li>
         </ul>
         <script type="text/javascript" src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
         <script type="text/javascript">
             $(function(){
    
                 $('ul li').click(function(){
                     // this指的是當前點擊的DOM物件 ,使用$(this)轉化jquery物件
                     $(this).addClass('active').siblings('li').removeClass('active');
                 })
             })
         </script>
    </body>
    </html>
    

    6.4.3toggleClass類的切換

    // 如果存在(不存在)就洗掉(添加)一個類,
    $('div').toggleClass('box')
    
    $('span').click(function(){
        //動態的切換class類名為active
        $(this).toggleClass('active')
    })
    

    6.5val 表單控制元件value屬性

    // 獲取值:用于表單控制元件中獲取值,比如input textarea select等等
    $(selector).val()
    
    // 設定值:
    $('input').val('設定了表單控制元件中的值');
    
    取值:
    	文本輸入框:$('#username').val();
    	input,type=radio單選框: $('[type="radio"]:checked').val();,首先找到被選中的標簽,再進行取值
    	input,type=checkbox多選框: 通過val方法不能直接獲取多選的值,只能拿到一個,想拿到多個項的值,需要回圈取值
    		var d = $('[type="checkbox"]:checked');
    		for (var i=0;i<d.length;i++){
    			console.log(d.eq(i).val());
    		}
    	單選下拉框select: -- $('#s1').val();
    	多選下拉框select: -- $('#s2').val(); -- ['1','2']
    
    設定值
    	文本輸入框: -- $('#username').val('xxx');
    	input,type=radio單選框: -- $(':radio').val(['1']) 找到所有的radio,然后通過val設定值,達到一個選中的效果.
    	給單選或者多選框設定值的時候,只要val方法中的值和標簽的value屬性對應的值相同時,那么這個標簽就會被選中.
    	此處有坑:$(':radio').val('1');這樣設定值,不帶中括號的,意思是將所有的input,type=radio的標簽的value屬性的值設定為1.
    	
    	input,type=checkbox多選框: -- $(':checkbox').val(['1','2']);
    	
    	單選下拉框select: -- $('#s1').val(['3']);
    	多選下拉框select: -- $('#s2').val(['1','2']);
    	
    	統一一個方法:
    		選擇框都用中括號設定值.
    

    6.6css樣式

    // css(直接修改css的屬性來修改樣式)
    $("div").css('color'); //獲取
    
    $("p").css("color", "red"); //設定
    $("p").css({"color":"red","background-color":"yello"}); // 設定多個
    

    6.7盒子樣式屬性

    6.7.1內容 : 寬度(width)和高度(height)

    // 寬度
    .width() //獲取寬度 回傳匹配元素中第一個元素的寬,一個沒有單位的數值
    .width( value ) //設定寬度
    
    //高度
    .height() //獲取高度 回傳匹配元素中第一個元素的高,一個沒有單位的數值
    .height( value ) //設定高度
    

    6.7.2內容+padding : 寬度(innerWidth)和高度(innerHeight)

    // 內部寬
    .innerWidth() // 獲取
    .innerWidth(value);//設定
    
    // 內部高
    .innerHeight() // 獲取
    .innerHeight(value); //設定
    

    6.7.3內容+padding+border : 寬度(outerWidth)和高度(outerHeight)

    // 外部寬
     .outerWidth() //獲取第一個匹配元素 :內容+padding+border的寬
     .outerWidth(true) //獲取第一個匹配元素:內容+padding+border+margin的寬
    
     .outerWidth(value) //設定多個,調整的是“內容”的寬
    
    //外部高
     .outerHeight() //第一個匹配元素:獲取內容+padding+border的高
     .outerHeight(true) //第一個匹配元素:獲取內容+padding+border+margin的高
    
     .outerHeight( value ) //設定多個,調整的是“內容”的高
    

    6.8滾動條距離屬性

    // 水平方向
    .scrollLeft()      //獲取
    .scrollLeft( value )//設定
    
    // 垂直方向
    .scrollTop() //獲取
    .scrollTop( value ) //設定
    

    7.jQuery影片效果

    jQuery提供的一組網頁中常見的影片效果,這些影片是標準的、有規律的效果;同時還提供給我們了自定義影片的功能,

    7.1顯示影片

    方式一:無引數,表示讓指定的元素直接顯示出來,其實這個方法的底層就是通過display: block;實作的,

    $("div").show();
    

    方式二:通過控制元素的寬高、透明度、display屬性,逐漸顯示,例如:3秒后顯示完畢,

    $('div').show(3000);
    

    方式三:和方式二類似,也是通過控制元素的寬高、透明度、display屬性,逐漸顯示,

    $("div").show("slow");
    
    // slow 慢:600ms
    // normal 正常:400ms
    // fast 快:200ms
    

    方式四:影片執行完后,立即執行回呼函式,

    //show(毫秒值,回呼函式;
    $("div").show(5000,function () {
        alert("影片執行完畢!");
    });
    

    總結:上面的四種方式幾乎一致:引數可以有兩個,第一個是影片的執行時長,第二個是影片結束后執行的回呼函式,

    7.2隱藏影片

    方式參照上面的show()方法的方式,如下:

    $(selector).hide();
    
    $(selector).hide(1000); 
    
    $(selector).hide("slow");
    
    $(selector).hide(1000, function(){});
    

    練習 : 實作點擊按鈕顯示盒子,再點擊按鈕隱藏盒子

    <!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>
            <div id="box">        
            </div>
            <button id="btn">隱藏</button>    
        </body>
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
        
        <script type="text/javascript">
            
            //jquery 提供了一些方法 show() hide() 控制元素顯示隱藏
            var isShow = true;
            $('#btn').click(function(){
                if(isShow){
                    $('#box').show('slow',function(){
                        $(this).text('盒子出來了');            
                        $('#btn').text('顯示');
                        isShow = false;
                    })
                }else{
                    $('#box').hide(2000,function(){
                        $(this).text('');    
                        $('#btn').text('隱藏');
                        isShow = true;
                    })
                }
            })
            
        </script>
    </html>
    

    7.3開關式顯示隱藏影片

    $('#box').toggle(3000,function(){});
    

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

    $('#btn').click(function(){
        $('#box').toggle(3000,function(){
            $(this).text('盒子出來了');    
            if ($('#btn').text()=='隱藏') {
                $('#btn').text('顯示');    
            }else{
                $('#btn').text('隱藏');    
            }
        });
    })
    

    7.4滑入和滑出

    7.4.1滑入影片效果:(類似于生活中的卷簾門):下拉影片,顯示元素,

    $(selector).slideDown(speed, 回呼函式);
    

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

    7.4.2滑出影片效果: 上拉影片,隱藏元素,

    $(selector).slideUp(speed, 回呼函式);
    

    7.4.3滑入滑出切換影片效果:

    $(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>
    
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
        <script>
            $(function () {
                //點擊按鈕后產生影片
                $("button:eq(0)").click(function () {
    
                    //滑入影片: slideDown(毫秒值,回呼函式[顯示完畢執行什么]);
                    $("div").slideDown(2000, function () {
                        alert("影片執行完畢!");
                    });
                })
    
                //滑出影片
                $("button:eq(1)").click(function () {
    
                    //滑出影片:slideUp(毫秒值,回呼函式[顯示完畢后執行什么]);
                    $("div").slideUp(2000, function () {
                        alert("影片執行完畢!");
                    });
                })
    
                $("button:eq(2)").click(function () {
                    //滑入滑出切換(同樣有四種用法)
                    $("div").slideToggle(1000);
                })
            })
        </script>
    
    <body>
    
    
    
    

    7.5淡入淡出影片

    淡入影片效果:讓元素以淡淡的進入視線的方式展示出來

    $(selector).fadeIn(speed, callback);
    

    淡出影片效果:讓元素以漸漸消失的方式隱藏起來

    $(selector).fadeOut(1000);
    

    淡入淡出切換影片效果:通過改變透明度,切換匹配元素的顯示或隱藏狀態

    $(selector).fadeToggle('fast', callback);
    

    引數的含義同show()方法,

    代碼如下:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            div {
                width: 300px;
                height: 300px;
                display: none;
                /*透明度*/
                opacity: 0.5;
                background-color: red;
            }
        </style>
    
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
        <script>
            $(function () {
                //點擊按鈕后產生影片
                $("button:eq(0)").click(function () {
    
    //                //淡入影片用法1:   fadeIn();   不加引數
                    $("div").fadeIn();
    
    //                //淡入影片用法2:   fadeIn(2000);   毫秒值
    //                $("div").fadeIn(2000);
    //                //通過控制  透明度和display
    
                    //淡入影片用法3:   fadeIn(字串);   slow慢:600ms   normal正常:400ms   fast快:200ms
    //                $("div").fadeIn("slow");
    //                $("div").fadeIn("fast");
    //                $("div").fadeIn("normal");
    
                    //淡入影片用法4:   fadeIn(毫秒值,回呼函式[顯示完畢執行什么]);
    //                $("div").fadeIn(5000,function () {
    //                    alert("影片執行完畢!");
    //                });
                })
    
                //滑出影片
                $("button:eq(1)").click(function () {
    //                //滑出影片用法1:   fadeOut();   不加引數
                   $("div").fadeOut();
    
    //                //滑出影片用法2:   fadeOut(2000);   毫秒值
    //                $("div").fadeOut(2000);  //通過這個方法實作的:display: none;
    //                //通過控制  透明度和display
    
                    //滑出影片用法3:   fadeOut(字串);   slow慢:600ms   normal正常:400ms   fast快:200ms
    //                $("div").fadeOut("slow");
    //                $("div").fadeOut("fast");
    //                $("div").fadeOut("normal");
    
                    //滑出影片用法1:   fadeOut(毫秒值,回呼函式[顯示完畢執行什么]);
    //                $("div").fadeOut(2000,function () {
    //                    alert("影片執行完畢!");
    //                });
                })
    
                $("button:eq(2)").click(function () {
                    //滑入滑出切換
                    //同樣有四種用法
                    $("div").fadeToggle(1000);
                })
    
                $("button:eq(3)").click(function () {
                    //改透明度
                    //同樣有四種用法
                    $("div").fadeTo(1000, 0.5, function () {
                        alert(1);
                    });
                })
            })
        </script>
    
    <body>
    
    
    
    
    

    7.6自定義影片

    7.6.1語法:

    $(selector).animate({params}, speed, callback);
    

    7.6.2作用:執行一組CSS屬性的自定義影片,

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            div {
                position: absolute;
                left: 20px;
                top: 30px;
                width: 100px;
                height: 100px;
                background-color: green;
            }
        </style>
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.3.1.js"></script>
        <script>
            jQuery(function () {
                $("button").click(function () {
                    var json = {"width": 500, "height": 500, "left": 300, "top": 300, "border-radius": 100};
                    var json2 = {
                        "width": 100,
                        "height": 100,
                        "left": 100,
                        "top": 100,
                        "border-radius": 100,
                        "background-color": "red"
                    };
    
                    //自定義影片
                    $("div").animate(json, 1000, function () {
                        $("div").animate(json2, 1000, function () {
                            alert("影片執行完畢!");
                        });
                    });
    
                })
            })
        </script>
    
    <body>
    
    

    7.7停止影片

    $(selector).stop(true, false);
    
    //第一個引數:
    true:后續影片不執行,
    false:后續影片會執行,
    
    //第二個引數:
    true:立即執行完成當前影片,
    false:立即停止當前影片,
    

    引數如果都不寫,默認兩個都是false,實際作業中,直接寫stop()用的多,

    滑鼠懸停,彈出下拉選單

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
    
            ul {
                list-style: none;
            }
    
            .wrap {
                width: 330px;
                height: 30px;
                margin: 100px auto 0;
                padding-left: 10px;
                background-color: pink;
            }
    
            .wrap li {
                background-color: green;
            }
    
            .wrap > ul > li {
                float: left;
                margin-right: 10px;
                position: relative;
            }
    
            .wrap a {
                display: block;
                height: 30px;
                width: 100px;
                text-decoration: none;
                color: #000;
                line-height: 30px;
                text-align: center;
            }
    
            .wrap li ul {
                position: absolute;
                top: 30px;
                display: none;
            }
        </style>
        <script src="jquery-3.3.1.js"></script>
        <script>
            //入口函式
            $(document).ready(function () {
                //需求:滑鼠放入一級li中,讓他里面的ul顯示,移開隱藏,
                var jqli = $(".wrap>ul>li");
    
                //系結事件
                jqli.mouseenter(function () {
                    $(this).children("ul").stop().slideDown(1000);
                });
    
                //系結事件(移開隱藏)
                jqli.mouseleave(function () {
                    $(this).children("ul").stop().slideUp(1000);
                });
            });
        </script>
    
    </head>
    <body>
    <div class="wrap">
        <ul>
            <li>
                <a href="javascript:void(0);">一級選單1</a>
                <ul>
                    <li><a href="javascript:void(0);">二級選單2</a></li>
                    <li><a href="javascript:void(0);">二級選單3</a></li>
                    <li><a href="javascript:void(0);">二級選單4</a></li>
                </ul>
            </li>
            <li>
                <a href="javascript:void(0);">二級選單1</a>
                <ul>
                    <li><a href="javascript:void(0);">二級選單2</a></li>
                    <li><a href="javascript:void(0);">二級選單3</a></li>
                    <li><a href="javascript:void(0);">二級選單4</a></li>
                </ul>
            </li>
            <li>
                <a href="javascript:void(0);">三級選單1</a>
                <ul>
                    <li><a href="javascript:void(0);">三級選單2</a></li>
                    <li><a href="javascript:void(0);">三級選單3</a></li>
                    <li><a href="javascript:void(0);">三級選單4</a></li>
                </ul>
            </li>
        </ul>
    </div>
    </body>
    </html>
    

    上方代碼中,關鍵的地方在于,用了stop函式,再執行影片前,先停掉之前的影片,

    8.jQuery的事件操作

    8.1系結事件

    bind(type,data,fn)
    

    描述:為每一個匹配元素的特定事件(像click)系結一個事件處理器函式,

    type (String) : 事件型別
    
    data (Object) : (可選) 作為event.data屬性值傳遞給事件物件的額外資料物件
    
    fn ( Function) : 系結到每個匹配元素的事件上面的處理函式
    

    當每個p標簽被點擊的時候,彈出其文本

    $("p").bind("click", function(){
      alert( $(this).text() );
    });
    

    你可以在事件處理之前傳遞一些附加的資料

    function handler(event) {
    //event.data 可以獲取bind()方法的第二個引數的資料
      alert(event.data.foo);
    }
    $("p").bind("click", {foo: "bar"}, handler)
    

    常見事件

    click(function(){...})
    hover(function(){...})
    blur(function(){...})
    focus(function(){...})
    change(function(){...}) //內容發生變化,input,select等
    keyup(function(){...})  
    mouseover/mouseout
    mouseenter/mouseleave
    mouseover事件是如果該標簽有子標簽,那么移動到該標簽或者移動到子標簽時會連續觸發,mouseenter事件不管有沒有子標簽都只觸發一次,表示滑鼠進入這個物件
    

    通過回傳false來取消默認的行為并阻止事件起泡

    $("form").bind("submit", function() { return false; })
    

    或通過event.preventDefault() 方法阻止事件起泡

    $("form").bind("submit", function(event){
      event.stopPropagation();
    });
    

    8.2解綁事件

    unbind(type,fn);
    

    描述:bind()的反向操作,從每一個匹配的元素中洗掉系結的事件,

      如果沒有引數,則洗掉所有系結的事件,

      如果把在系結時傳遞的處理函式作為第二個引數,則只有這個特定的事件處理函式會被洗掉,

    type (String) : (可選) 事件型別
    fn(Function) : (可選) 要從每個匹配元素的事件中反系結的事件處理函式
    

    示例:把所有段落的所有事件取消系結

    $("p").unbind()
    

    將段落的click事件取消系結

    $("p").unbind( "click" )

    8.3補充 一次性事件

    one(type,data,fn)
    

    描述:為每一個匹配元素的特定事件(像click)系結一個一次性的事件處理函式,在每個物件上,這個事件處理函式只會被執行一次,其他規則與bind()函式相同

    type (String) : 事件型別
    data (Object) : (可選) 作為event.data屬性值傳遞給事件物件的額外資料物件
    fn (Function) : 系結到每個匹配元素的事件上面的處理函式
    

    示例:當所有段落被第一次點擊的時候,顯示所有其文本,

    $("p").one("click", function(){
    //只有第一次點擊的時候才會觸發,再次點擊不會觸發了
      alert( $(this).text() );
    });
    

    8.4事件委托(事件代理)

    通俗的講,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是讓別人來做,這個事件本來是加在某些元素上的,然而你卻加到別人身上來做,完成這個事件,
    舉個列子:有三個同事預計會在周一收到快遞,為簽收快遞,有兩種辦法:一是三個人在公司門口等快遞;二是委托給前臺MM代為簽收,現實當中,我們大都采用委托的方案(公司也不會容忍那么多員工站在門口就為了等快遞),前臺MM收到快遞后,她會判斷收件人是誰,然后按照收件人的要求簽收,甚至代為付款,這種方案還有一個優勢,那就是即使公司里來了新員工(不管多少),前臺MM也會在收到寄給新員工的快遞后核實并代為簽收,

    原理:利用冒泡的原理,把事件加到父級上,觸發執行效果,

    作用:

    1.性能要好
    2.針對新創建的元素,直接可以擁有事件

    事件源 :

      跟this作用一樣(他不用看指向問題,誰操作的就是誰),event物件下的

    使用情景:

      ?為DOM中的很多元素系結相同事件;
      ?為DOM中尚不存在的元素系結事件;

    <body>
            <ul>
                <li class="luffy">路飛</li>
                <li>路飛</li>
                <li>路飛</li>
                
            </ul>
    </body>
    <script src=https://www.cnblogs.com/fengqiang626/p/"jquery-3.2.1.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        
        //通過on()方法
         $('ul').on('click','#namei,.luffy',function(){
            console.log(this);
           })
                
       //未來追加的元素 
        $('ul').append('<a id="namei">娜美</a>')
    
    }
    </script>
    

    語法:在選定的元素上系結一個或多個事件處理函式

    on(type,selector,data,fn);
    
    events( String) : 一個或多個空格分隔的事件型別
    selector( String) : 一個選擇器字串,用于過濾出被選中的元素中能觸發事件的后代元素
    data: 當一個事件被觸發時,要傳遞給事件處理函式的event.data,
    fn:回呼函式
    

    9.示例

    表單驗證

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>登錄注冊示例</title>
      <style>
        .error {
          color: red;
        }
      </style>
    </head>
    <body>
    
    <form id="myForm">
      <label for="name">姓名</label>
      <input type="text" id="name">
      <span class="error"></span>
      <label for="passwd">密碼</label>
      <input type="password" id="passwd">
      <span class="error"></span>
      <input type="submit" id="modal-submit" value=https://www.cnblogs.com/fengqiang626/p/"登錄">
    
    
    <script src="jquery3.4.1.js"></script>
    <script>
      function myValidation() {
        // 多次用到的jQuery物件存盤到一個變數,避免重復查詢檔案樹
        var $myForm = $("#myForm");
        $myForm.find(":submit").on("click", function () {
          // 定義一個標志位,記錄表單填寫是否正常
          var flag = true;
          $myForm.find(":text, :password").each(function () {
            var val = $(this).val();
            if (val.length <= 0 ){
              var labelName = $(this).prev("label").text();
              $(this).next("span").text(labelName + "不能為空");
              flag = false;
            }
          });
          return flag;
        });
        // input輸入框獲取焦點后移除之前的錯誤提示資訊
        $myForm.find("input[type!='submit']").on("blur", function () {
          $(this).next(".error").text("");
        })
      }
      myValidation()
    </script>
    </body>
    </html>
    

    表格操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .cover {
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                background-color: rgba(0, 0, 0, 0.3);
                z-index: 99;
            }
    
            .modal {
                width: 300px;
                height: 200px;
                background-color: white;
                position: absolute;
                top: 50%;
                left: 50%;
                margin-top: -100px;
                margin-left: -150px;
                z-index: 1000;
            }
            .hide {
                display: none;
            }
        </style>
        <script src=https://www.cnblogs.com/fengqiang626/p/"jquery3.4.1.js"></script>
    
    <body>
    
    
    
    # 姓名 愛好 操作
    金老板 開車
    alex 抽煙、喝酒、燙頭
    苑昊(苑局) 不洗頭、不翻車、不要臉
    <script> // 定義一個清空輸入框并且隱藏模態框的方法 function hideModal(){ // 1. 清空input的值 $("#name,#hobby").val(''); // 2. 隱藏起來 $(".cover,.modal").addClass('hide'); } // 開除按鈕的功能 $("table").on('click', '.fire', function () { //我們先去學冒泡事件、事件委托然后再回來學這個例子,事件里面都是用的匿名函式,這里用on是因為我們要將新添加進來的每行里面的button標簽能夠繼承這個點擊洗掉的事件 // 點擊開除按鈕要做的事兒————把當前行移除掉 //this --> 觸發當前點擊事件的DOM物件 $(this).parent().parent().remove(); // 鏈式操作 }); // 新增按鈕的功能 $("#add").click(function () { // 點擊新增按鈕要做的事兒 // 1. 移除cover和modal的hide樣式 $(".cover,.modal").removeClass('hide'); }); // 點擊modal中的cancel按鈕 $("#cancel").click(function () { hideModal(); }); // 點擊modal中的submit按鈕 $("#submit").click(function () { // 1. 獲取用戶輸入的值 var name = $("#name").val(); var hobby = $("#hobby").val(); // 2. 隱藏模態框,清空輸入框 hideModal(); // 3. 創建一個tr標簽,把資料塞進去 var trEle = document.createElement("tr"); $(trEle).append('<td><input type="checkbox"></td>'); $(trEle).append('<td>' + name + '</td>'); var tdTmp = document.createElement('td'); tdTmp.innerText = hobby; $(trEle).append(tdTmp); $(trEle).append('<td><button class="fire">開除</button></td>') // 4. 把上一步的tr追加到表格的tbody后面 $('tbody').append(trEle); });   //先用下面這種方式寫,你會發現一些問題,我們新添加的每一行資料里面的那個button標簽點擊洗掉的時候沒有效果 // 點擊modal中的submit按鈕 // $("#submit").on('click', function () { #這個和直接$('submit').click(function ...)是一樣的 // // 1. 獲取用戶輸入的值 // var name = $("#name").val(); // var hobby = $("#hobby").val(); // // 2. 隱藏模態框,清空輸入框 // hideModal(); // // 3. 創建一個tr標簽,把資料塞進去 // var trEle = document.createElement("tr"); // $(trEle).append('<td><input type="checkbox"></td>'); // $(trEle).append('<td>' + name + '</td>'); // var tdTmp = document.createElement('td'); // tdTmp.innerText = hobby; // $(trEle).append(tdTmp); // $(trEle).append('<td><button class="fire">開除</button></td>') // // 4. 把上一步的tr追加到表格的tbody后面 // $('tbody').append(trEle); // }) </script> </body> </html>

    轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/41376.html

    標籤:jQuery

    上一篇:Jquery頁面中添加鍵盤按鍵事件,如ESC事件

    下一篇:VUE創建播發器組件并呼叫

    標籤雲
    其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

    熱門瀏覽
    • IEEE1588PTP在數字化變電站時鐘同步方面的應用

      IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

      uj5u.com 2020-09-10 03:51:52 more
    • HTTP request smuggling CL.TE

      CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

      uj5u.com 2020-09-10 03:52:11 more
    • 網路滲透資料大全單——漏洞庫篇

      網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

      uj5u.com 2020-09-10 03:52:15 more
    • 京準講述NTP時鐘服務器應用及原理

      京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

      uj5u.com 2020-09-10 03:52:25 more
    • 利用北斗衛星系統設計NTP網路時間服務器

      利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

      uj5u.com 2020-09-10 03:52:35 more
    • 詳細解讀電力系統各種對時方式

      詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

      uj5u.com 2020-09-10 03:52:45 more
    • 如何保證外包團隊接入企業內網安全

      不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

      uj5u.com 2020-09-10 03:52:57 more
    • PHP漏洞之【整型數字型SQL注入】

      0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

      uj5u.com 2020-09-10 03:55:40 more
    • [GXYCTF2019]禁止套娃

      git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

      uj5u.com 2020-09-10 03:56:07 more
    • 等保2.0實施流程

      流程 結論 ......

      uj5u.com 2020-09-10 03:56:16 more
    最新发布
    • 使用Django Rest framework搭建Blog

      在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

      uj5u.com 2023-04-20 08:17:54 more
    • 記錄-new Date() 我忍你很久了!

      這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

      uj5u.com 2023-04-20 08:17:47 more
    • 使用Vue.js實作文字跑馬燈效果

      實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

      uj5u.com 2023-04-20 08:12:31 more
    • JavaScript 運算子

      JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

      uj5u.com 2023-04-20 08:02:25 more
    • CSS—相對單位rem

      一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

      uj5u.com 2023-04-20 08:02:21 more
    • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

      好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

      uj5u.com 2023-04-20 08:01:50 more
    • 如何在 vue3 中使用 jsx/tsx?

      我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

      uj5u.com 2023-04-20 08:01:37 more
    • 【Vue2.x原始碼系列06】計算屬性computed原理

      本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

      uj5u.com 2023-04-20 08:01:31 more
    • http1.1與http2.0

      一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

      uj5u.com 2023-04-20 08:01:10 more
    • http1.1與http2.0

      一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

      uj5u.com 2023-04-20 08:00:32 more