jQuery第3天

来源:https://www.cnblogs.com/replaceroot/archive/2019/05/05/10816297.html
-Advertisement-
Play Games

複習 如何區別 JS DOM對象和 JQ 包裝對象? JQ對象其實是經過包裝的DOM對象,包裝後可調用 JQ 的方法。 JS 對象基本上都是屬性為主,JQ基本上都方法為主。 可通過 console.dir() 在控制台輸出對象的所有屬性和方法區別。 JQ 對象輸出 DOM 對象輸出 JQ事件綁定方式 ...


複習

如何區別 JS DOM對象和 JQ 包裝對象?

JQ對象其實是經過包裝的DOM對象,包裝後可調用 JQ 的方法。

JS 對象基本上都是屬性為主,JQ基本上都方法為主。

可通過 console.dir() 在控制台輸出對象的所有屬性和方法區別。

JQ 對象輸出

 

DOM 對象輸出

 

JQ事件綁定方式

目標

學習 JQ事件綁定方式 on

知識點

方式1:(推薦使用 on)

事件源.on("事件類型",事件處理函數);

方式2:(瞭解)

事件源.bind("事件類型",事件處理函數);

方式3:(快捷綁定方式)

事件源.事件類型(事件處理函數)

小結

推薦使用 on 實現事件綁定

 

JQ事件解綁方式

目標

學習 JQ事件解綁方式 off

知識點

方式1:(推薦使用 off)

事件源.off("事件類型");

如果不傳入事件類型參數,代表移除所有事件。

方式2:

事件源.unbind("事件類型");

小結

推薦使用 off 解綁事件

 

JQ事件委托

目標

學習 JQ事件委托

事件委托綁定

on 的方式:

$("父元素").on("事件類型","子元素",事件處理函數);

父元素: 委托事件
子元素:子元素才是真正觸發事件的目標元素

delegate 的方式:(瞭解)

$("父元素").delegate ("子元素", "事件類型", 事件處理函數);

 

事件委托解綁

off 方式

$("父元素").off("事件類型","子元素");

undelegate

$("父元素").undelegate ("子元素", "事件類型");

小結

推薦使用 on 實現事件委托綁定,註意區別子元素和事件類型的參數順序。

推薦使用 off 實現事件委托解綁。

 

替換節點

目標

通過手冊查閱 replaceWith 替換節點的用法

知識點

新節點替換

原節點.replaceWith(新節點)

字元串替換

原節點.replaceWith(字元串)

小結

建議創建新節點再替換,因為新建節點後可以保持到變數中方便下次使用,直接傳字元串則需要重新查找。

 

事件觸發器

目標

學習事件觸發器觸發事件

知識點

trigger 主要用於模擬用戶觸發了某個事件,如:頁面載入的時候獲取輸入框焦點...

JQ元素.trigger("事件類型")

 

滑鼠移入移出事件

目標

學習新的滑鼠移入移出事件

知識點

滑鼠移入:

mouseover
mouseenter   // 推薦使用

滑鼠移出:

mouseout
mouseleave   // 推薦使用

小結

之前我們學習了 hover 滑鼠移入移出綜合體,其實就是調用了 mouseenter 和 mouseleave。

早期的時候,Chrome 瀏覽器其實是不支持 mouseenter 和 mouseleave 事件的。

jQuery 提出並實現了,原理就是阻止事件傳播,避免事件移到子元素反覆觸發的問題。

 

JQ元素索引值

目標

通過 JQ 提供的方式獲取元素索引值

知識點

jQuery 直接提供了獲取元素索引值的方法。

.index()

常見寫法1:

$(this).index()
// 獲取當前元素的索引值,以父元素為單位,當前元素是第幾個孩子。

常見寫法2:

$("選擇器").index(this)
// 獲取當前元素的索引值,以選擇器選中的元素為單位,當前元素是第幾個。

小結

大部分情況下兩種寫法都可以。

 

獲取元素寬高

目標

獲取元素寬高

知識點

// 獲取或設置寬度
.width()

// 獲取或設置高度
.height()

# 不傳入參數代表獲取,傳入參數代表設置寬高。

小結

width() height() 獲取和設置的數據類型都是數值型。

 

offset 獲取元素偏移值

目標

獲取元素的偏移值

知識點

獲取元素基於頁面的偏移值。

.offset()

# 返回對象格式 { left: xx, top: xx }

小結

獲取的時候會把 margin-left 和 left 的偏移值都會計算進去。

 

控制頁面滾動到某個位置

目標

獲取和設置頁面滾動位置

知識點

應用場景:返回頂部,點擊跳轉到某個樓層。

寫法1:無動畫效果

$("html,body").scrollTop(數值);

# 如果數值為0,就是返回頂部

寫法2:帶動畫效果

$("html,body").stop().animate({ scrollTop : 數值 })

小結

控制水平滾動位置使用 scrollLeft,使用方式和 scrollTop 同理。

 

思維腦圖總結:

 

案例

 微博新聞發佈效果:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>微博發佈效果</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        .weibo {
            width: 600px;
            border: 1px solid #ccc;

            margin: 100px auto;
            padding: 10px;

        }

        .weibo-text {
            width: 590px;
            height: 140px;
            padding: 5px;
            border: 1px solid #ccc;
            outline: none;
            resize: none;
        }

        .weibo-text:focus {
            border-color: #f60;
        }

        .weibo-btn {
            width: 80px;
            height: 30px;
            background-color: #f90;
            color: #fff;
            border: 0 none;
            margin-top: 5px;
            border-radius: 3px;
            cursor: pointer;
            outline: 0 none;
        }

        .weibo-list {
            padding-top: 10px;
        }

        .weibo-list li {
            font-size: 14px;
            line-height: 30px;
            border-bottom: 1px dotted #ccc;
            overflow: hidden;
        }

        .weibo-list li p {
            float: left;
            cursor: pointer;
        }

        .weibo-list li span {
            float: right;
            cursor: pointer;
        }

        .weibo-list li input {
            height: 24px;
            line-height: 24px;
            width: 300px;
            font-size: 14px;
            border: 0 none;
        }
    </style>
    <!-- 1. 引入 jQuery 核心庫 -->
    <script src="./lib/jquery-1.12.4.js"></script>
    <!-- 2. 新建 script 寫業務邏輯 -->
    <script>
        // 3. jQuery 入口函數,業務代碼寫到入口函數內部
        $(function () {
          // **********業務代碼開始**********
          
          // 1.判斷輸入微博的長度,如果為0提示,超過120提示
          var $userInput = $('.weibo-text');
          var $weiboBtn = $('.weibo-btn');
          var $weiboList = $('.weibo-list');
          var newInput
          console.log($userInput, $weiboBtn, $weiboList);

          $weiboBtn.on('click', function(){
            // 獲取內容長度
            // trim()方法意味著刪除左右2邊的空格
            var userText = $userInput.val().trim();
            if(userText.length === 0){
              alert("請輸入內容再發佈哦❤");
              // 中斷函數
              return;
            }else if(userText.length > 120){
              alert("請保證內容長度小於120個字元哦❤");
              return;
            }else{
              // 2. 把輸入的微博內容,添加到 .weibo-list 列表中
              // 獲取用戶輸入的內容並創建元素插入到.weibo-list的最前面
              var newTag = $("<li><p>" + userText + "</p><span>刪除</span></li>");
              $weiboList.prepend(newTag);

              // 3. 發佈成功後,清空文本域 .weibo-text
              $userInput.val("");

              // 4. 發佈的時候,有滑動顯示動畫效果
              // 思路:先將newTag隱藏然後通過slideDown()下滑方式顯示
              newTag.hide().slideDown(500);
            }
          });
          // 5. 點擊刪除按鈕,刪除對應那條微博  事件委托實現
          $weiboList.on('click', 'li span' ,function(){
            // 找到當前節點的父節點然後刪除這個父節點也就是刪除li
            $(this).parent().remove();
          });

          // 6. 點擊 p 標簽,p 標簽能替換成 input 標簽進行微博編輯
          $weiboList.on('click', 'li p' ,function(){
            // 保存當前p標簽的內容
            var pOldString = $(this).text();
            newInput = $('<input text="text" />');
            // 替換標簽
            $(this).replaceWith(newInput);
            // 將p標簽原來的內容給input的value值
            newInput.val(pOldString);
            // 輸入框獲取焦點
            newInput.trigger('focus');
          });

          // 7. input 標簽失去焦點後,input 標簽替換回 p 標簽
          $weiboList.on('blur', 'li input', function(){
            // 獲取input標簽的value值
            var newInputValue = newInput.val();
            console.log(newInputValue);
            var newP = $('<p>' + newInputValue + '</p>')
            $(this).replaceWith(newP); 
                      
          });
          // 8. 頁面發佈的時候,通過事件觸發器自動獲取文本域的焦點    
          $userInput.trigger('focus');

          // 9. 利用事件對象,判斷回車鍵,實現按回車鍵發佈微博。
          $userInput.on('keyup', function(event){
            if(event.keyCode === 13){
              $weiboBtn.trigger('click');
            }
          });
        });

    </script>
</head>

<body>
    <div class="weibo">
        <textarea class="weibo-text"></textarea>
        <input class="weibo-btn" value="發佈" type="button">
        <ul class="weibo-list">
            <li>
                <p>快來收了這九款用上就停不下來的應用吧!!</p>
                <span>刪除</span>
            </li>
            <li>
                <p>超級詳細的雲南大理自助游攻略</p>
                <span>刪除</span>
            </li>
            <li>
                <p>外國最近很火的舞蹈,舒服簡單自然,太棒了!</p>
                <span>刪除</span>
            </li>
        </ul>
    </div>
</body>

</html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 版權聲明:本文為xing_star原創文章,轉載請註明出處! 本文同步自http://javaexception.com/archives/80 背景: 之前碰到了一個頁面展示問題,SearchView放在Toolbar裡面,展示在頁面頂部,發現進入這個頁面後,左上角是箭頭圖標(表示點擊返回),中間 ...
  • DOM(Document Object Model): 結點的概念:整個文檔就是由層次不同的多個節點組成,可以說結點代表了全部內容。 結點類型 1.元素結點 2.屬性結點 3.文本結點 結點的註意點: 1.文本節點和屬性結點都看作元素結點的子結點 2.我們一般所說的結點指的就是元素結點,將html標 ...
  • BOM(Broswer Object Model) 凡是 window 的屬性和方法,均可以省略“window.” 方法: 框窗 1.警告框 window.alert("msg"); 2.確認框 window.confirm("msg"); 3.詢問框 window.prompt("msg","de ...
  • 1 什麼是解構賦值 解構賦值允許你使用類似數組或對象字面量的語法將數組和對象的屬性賦給各種變數。這種賦值語法極度簡潔,同時還比傳統的屬性訪問方法更為清晰。解構會僅提取出一個大對象中的部分成員來單獨使用。 如下是傳統的: 但在ES6中可以簡寫為: 2 數組與對象的解構 數組解構賦值語法的一般形式為: ...
  • 那麼如何實現裝飾器的使用呢? 1.在命令行工具中使用 npm run eject。不熟的情況下可能會報錯,如果報錯的信息大概意思是:有些文件未被追蹤到,那麼直接git add . 再 git commit -m "",或者直接在.gitignore中忽略這些文件(不建議)2.npm run ejec ...
  • jsonp的本質是通過script標簽的src屬性請求到服務端,拿到到服務端返回的數據 ,因為src是可以跨域的。前端通過src發送跨域請求時在請求的url帶上回調函數,服務端收到請求時,接受前端傳過來的回掉函數名稱,將其拼接成js函數調用返回到前端即可完成跨域請求。 前端實現代碼: .Net服務端 ...
  • 前言 今天繼續typescript的學習,開始ts類的學習。 類 類的實現 在ES6中新增了類的概念。我們先看ES6中類的實現。 在ts中類的定義。ts中類的定義跟ES6差別不大。只是ts中新增了對屬性的類型的校驗。因此我們在使用屬性之前必須先定義屬性的類型。比如下麵Person類中的name和ag ...
  • H5-表單筆記 結果: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...